diff --git a/README.md b/README.md
index 3c2b20f2..402eb620 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# banjo (95.9391%)
+# banjo (95.9562%)
diff --git a/decompressed.us.v10.yaml b/decompressed.us.v10.yaml
index c4a253ce..6e4b4b53 100644
--- a/decompressed.us.v10.yaml
+++ b/decompressed.us.v10.yaml
@@ -622,7 +622,7 @@ segments:
- [0xF8A0F0, c, code_34790] #DONE
- [0xF8AE80, c, code_35520] #DONE
- [0xF8B010, c, code_356B0] #DONE
- - [0xF8D310, c, code_379B0]
+ - [0xF8D310, c, code_379B0] #DONE
- [0xF8D630, c, code_37CD0] #DONE
- [0xF8D7B0, c, code_37E50] #DONE
- [0xF8DAB0, c, code_38150] #DONE
diff --git a/progress/progress_core2.svg b/progress/progress_core2.svg
index a07cfa0c..8fc56783 100644
--- a/progress/progress_core2.svg
+++ b/progress/progress_core2.svg
@@ -17,7 +17,7 @@
core2
- 94.6580%
- 94.6580%
+ 94.6877%
+ 94.6877%
\ No newline at end of file
diff --git a/progress/progress_total.svg b/progress/progress_total.svg
index ff4530d3..372d3283 100644
--- a/progress/progress_total.svg
+++ b/progress/progress_total.svg
@@ -17,7 +17,7 @@
Banjo-Kazooie (us.v10)
- 95.9391%
- 95.9391%
+ 95.9562%
+ 95.9562%
\ No newline at end of file
diff --git a/src/core2/code_379B0.c b/src/core2/code_379B0.c
index 847ed2d5..3c5a1f1b 100644
--- a/src/core2/code_379B0.c
+++ b/src/core2/code_379B0.c
@@ -10,45 +10,37 @@ f32 D_8037DA30[3];
f32 D_8037DA40[3];
/* .code */
-#ifndef NONMATCHING
-#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_379B0/func_802BE940.s")
-#else
-void func_802BE940(void) {
- f32 sp3C[3];
- f32 sp38;
- f32 sp34;
- f32 sp30;
- f32 sp24[3];
- f32 sp1C;
+void func_802BE940(void)
+{
+ f32 sp3C[3];
+ f32 sp30[2];
+ f32 new_var;
+ f32 sp24[3];
- sp3C[0] = sp3C[1] = sp3C[2] = 0.0f;
- sp3C[1] = -1.0f;
- ml_vec3f_pitch_rotate_copy(sp24, sp3C, 68.0f);
- sp1C = 0.0f;
- sp34 = sp24[1] * ((f32) framebuffer_width / (f32) framebuffer_height);
- D_8037DA40[0] = sp24[0];
- D_8037DA40[1] = sp24[1];
- D_8037DA40[2] = sp24[2];
+ sp3C[0] = (sp3C[1] = (sp3C[2] = 0.0f));
+ sp3C[1] = -1.0f;
+ ml_vec3f_pitch_rotate_copy(sp24, sp3C, 68.0f);
+ sp30[0] = sp24[1] * ((f32) framebuffer_width / framebuffer_height);
+ sp30[1] = 0;
+
+ D_8037DA40[1] = sp24[1];
+ D_8037DA40[2] = sp24[2];
+ D_8037DA40[0] = sp24[0];
- D_8037DA00[0] = (f32) (sp24[0] + sp34);
- D_8037DA00[1] = (f32) (sp24[1] + sp1C);
- D_8037DA00[2] = sp24[2];
-
- D_8037DA10[0] = (f32) (sp34 - sp24[0]);
- D_8037DA10[1] = (f32) (sp1C - sp24[1]);
- D_8037DA10[2] = sp24[2];
-
- sp30 = -sp34;
- sp38 = -0.0f;
- D_8037DA20[0] = (f32) (sp30 - sp24[0]);
- D_8037DA20[1] = (f32) (sp38 - sp24[1]);
- D_8037DA20[2] = sp24[2];
-
- D_8037DA30[0] = (f32) (sp24[0] + sp30);
- D_8037DA30[1] = (f32) (sp24[1] + sp38);
- D_8037DA30[2] = sp24[2];
+ D_8037DA00[0] = (sp30[0] + sp24[0]);
+ D_8037DA00[1] = (sp30[1] + sp24[1]);
+ D_8037DA00[2] = sp24[2];
+ D_8037DA10[0] = (sp30[0] -sp24[0]);
+ D_8037DA10[1] = (sp30[1] -sp24[1]);
+ D_8037DA10[2] = sp24[2];
+ new_var = -sp30[0];
+ D_8037DA20[0] = (new_var -sp24[0]);
+ D_8037DA20[1] = (-sp30[1] -sp24[1]);
+ D_8037DA20[2] = sp24[2];
+ D_8037DA30[0] = (new_var + sp24[0]);
+ D_8037DA30[1] = (-sp30[1] + sp24[1]);
+ D_8037DA30[2] = sp24[2];
}
-#endif
void func_802BEA4C(f32 arg0[3], f32 arg1[3], f32 arg2, f32 arg3[3]) {
f32 sp24[3];