Function at 0x440e80
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x188
push ebx
push ebp
push esi
push edi
call fcn.00422660
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x19c]
inc eax
lea ecx, [esp + 0x94]
push eax
push 0x66c0e4
push str._ssystem_teacher_d.rom
push ecx
mov dword [esp + 0x60], 0x15f
mov dword [esp + 0x64], 0x2e3
mov dword [esp + 0x7c], 0x47
mov dword [esp + 0x80], 0x1c9
call dword [0x48534c]
lea edx, [esp + 0xa4]
push edx
call fcn.00401070
mov ebp, eax
mov dword [esp + 0x38], ebp
call fcn.00401950
push 0
push 0x3ff00000
push 0
push 0
push 0
push 0
push 0
push ebp
mov esi, eax
push 0x258
push 0x190
push esi
mov dword [esp + 0x98], esi
call fcn.00401b10
add esp, 0x40
push 0
push esi
call fcn.00402840
call fcn.00401950
mov ecx, dword [0x6349a8]
push 0
push 0x3ff00000
push 0
push 0
push 0x3e8
push 0
push 9
push ecx
push 0x249
push 0x190
push eax
mov dword [esp + 0x74], eax
call fcn.00401b10
add esp, 0x34
mov dword [esp + 0x18], 0
lea ebx, [esp + 0x74]
mov esi, 1
call fcn.00401950
mov edi, eax
push esi
push ebp
mov dword [ebx], edi
call fcn.00401770
mov edx, dword [eax + 8]
push 0
push 0x3ff00000
mov eax, dword [eax + 4]
push 0
push 0
push 0x64
push 0
push esi
push ebp
push edx
mov edx, dword [esp + 0x44]
add eax, edx
push eax
push edi
call fcn.00401b10
add esp, 0x34
add ebx, 4
inc esi
lea ecx, [esi - 1]
cmp ecx, 2
jl 0x440f6d
mov eax, dword [esp + 0x18]
add eax, 0x184
cmp eax, 0x308
mov dword [esp + 0x18], eax
jl 0x440f68
mov edi, 5
xor esi, esi
call fcn.00401950
mov edx, dword [0x6349a8]
mov ecx, dword [esp + esi + 0x50]
push 0
push 0x3ff00000
push 0
push 0
push 0xc8
push 0
push 0xc
push edx
push 0xaf
push ecx
push eax
mov dword [esp + esi + 0x64], eax
call fcn.00401b10
call fcn.00401950
mov ebx, eax
push edi
push ebp
mov dword [esp + esi + 0xb8], ebx
call fcn.00401770
mov edx, dword [eax + 8]
mov eax, dword [eax + 4]
push 0
push 0x3ff00000
push 0
push 0
push 0x3e8
push 0
push edi
push ebp
push edx
push eax
push ebx
call fcn.00401b10
add esp, 0x60
push 0xc
push 0
push ebx
call fcn.00402e80
add esp, 0xc
add esi, 4
inc edi
lea ecx, [edi - 5]
cmp ecx, 2
jl 0x440fcc
lea edx, [esp + 0x5c]
xor eax, eax
mov edi, 2
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], eax
xor esi, esi
jmp 0x441076
mov ebp, dword [esp + 0x24]
call fcn.00443510
mov ebx, eax
mov ax, word [esp + esi + 0x6c]
push 0x16e
push 0xf3
push 0x82
push eax
push ebx
mov dword [esp + esi + 0xa0], ebx
call fcn.00443540
lea eax, [edi + 1]
push 0
push eax
push ebp
mov dword [esp + 0x3c], eax
call fcn.004017d0
add esp, 0x20
mov ebp, eax
call fcn.00407b00
movsx ecx, word [ebp + 2]
mov edx, 0xf3
push ebx
mov dword [esp + 0x24], eax
mov dword [esp + esi + 0x2c], eax
mov eax, dword [esp + 0x28]
sub edx, ecx
push 0x3ff00000
push 0
sar edx, 1
push edi
push eax
mov dword [esp + esi + 0x44], edx
call fcn.00401880
mov ecx, dword [esp + esi + 0x44]
mov edi, dword [esp + 0x34]
add esp, 8
push eax
push 0xc8
push 1
push ebp
push 0
push ecx
push edi
call fcn.00408a50
push 0x20
push 0x100
push 0
push 1
push edi
call fcn.004082f0
movsx eax, word [ebp + 4]
add eax, 0xfffffe92
mov edi, dword [esp + 0x58]
mov dword [esp + 0x5c], eax
mov dword [esp + esi + 0x80], eax
fild dword [esp + 0x5c]
mov eax, dword [esp + 0x54]
lea edx, [edi - 2]
add esp, 0x3c
add esi, 4
fdivr qword [0x485900]
add eax, 8
cmp edx, 2
mov dword [esp + 0x18], eax
fstp qword [eax - 8]
jl 0x441072
or ebx, 0xffffffff
call fcn.00407d20
push 8
push 8
push 1
push 1
push 0
call fcn.0040bd00
mov ebp, dword [esp + 0x50]
add esp, 0x14
call fcn.004454f0
test eax, eax
je 0x4413fc
cmp ebx, 0xffffffff
je 0x441218
push 0
call fcn.004234d0
add esp, 4
test eax, eax
je 0x441215
call fcn.00423490
sub eax, 0xaf
mov dword [esp + 0x1c], eax
fild dword [esp + 0x1c]
fdiv qword [esp + ebx*8 + 0x5c]
call fcn.0047ddb0
test eax, eax
mov dword [esp + ebx*4 + 0x10], eax
jge 0x4411c4
mov dword [esp + ebx*4 + 0x10], 0
jmp 0x4411d1
mov ecx, dword [esp + ebx*4 + 0x44]
dec ecx
cmp eax, ecx
jl 0x4411d1
mov dword [esp + ebx*4 + 0x10], ecx
mov esi, dword [esp + ebx*4 + 0x10]
mov dword [esp + 0x1c], esi
fild dword [esp + 0x1c]
fmul qword [esp + ebx*8 + 0x5c]
call fcn.0047ddb0
mov ecx, dword [esp + ebx*4 + 0x38]
add eax, 0xaf
push eax
mov eax, dword [esp + ebx*4 + 0x54]
push eax
push ecx
call fcn.00402620
mov edx, dword [esp + ebx*4 + 0x3c]
mov eax, dword [esp + ebx*4 + 0x34]
neg esi
push esi
push edx
push eax
call fcn.00407f90
add esp, 0x18
jmp 0x4413fc
or ebx, 0xffffffff
push 0
call fcn.004234d0
add esp, 4
test eax, eax
jne 0x441233
call fcn.00423520
test eax, eax
je 0x4413fc
call fcn.00423480
mov esi, eax
call fcn.00423490
mov ecx, dword [esp + 0x40]
mov edi, eax
push edi
push esi
push ecx
call fcn.00402b00
add esp, 0xc
test eax, eax
jne 0x44140a
mov edx, dword [esp + 0x74]
push edi
push esi
push edx
call fcn.00402b00
add esp, 0xc
test eax, eax
je 0x4412c8
mov eax, dword [esp + 0x10]
test eax, eax
jle 0x4413fc
sub eax, 0xa
mov dword [esp + 0x10], eax
jns 0x441288
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x28]
neg eax
push eax
push ecx
push edx
call fcn.00407f90
fild dword [esp + 0x1c]
fmul qword [esp + 0x68]
call fcn.0047ddb0
add eax, 0xaf
push eax
mov eax, dword [esp + 0x48]
push 0x15f
push eax
call fcn.00402620
add esp, 0x18
jmp 0x4413fc
mov ecx, dword [esp + 0x78]
push edi
push esi
push ecx
call fcn.00402b00
add esp, 0xc
test eax, eax
je 0x44132f
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x10]
dec edx
cmp eax, edx
jge 0x4413fc
mov ecx, dword [esp + 0x28]
add eax, 0xa
mov dword [esp + 0x10], eax
neg eax
push eax
mov eax, dword [esp + 0x34]
push eax
push ecx
call fcn.00407f90
fild dword [esp + 0x1c]
fmul qword [esp + 0x68]
call fcn.0047ddb0
mov edx, dword [esp + 0x44]
add eax, 0xaf
push eax
push 0x15f
push edx
call fcn.00402620
add esp, 0x18
jmp 0x4413fc
mov eax, dword [esp + 0x7c]
push edi
push esi
push eax
call fcn.00402b00
add esp, 0xc
test eax, eax
je 0x441398
mov eax, dword [esp + 0x14]
test eax, eax
jle 0x4413fc
sub eax, 0xa
mov dword [esp + 0x14], eax
jns 0x44135f
mov dword [esp + 0x14], 0
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x2c]
neg ecx
push ecx
push edx
push eax
call fcn.00407f90
fild dword [esp + 0x20]
fmul qword [esp + 0x70]
call fcn.0047ddb0
add eax, 0xaf
push eax
push 0x2e3
push ebp
call fcn.00402620
add esp, 0x18
jmp 0x4413fc
mov ecx, dword [esp + 0x80]
push edi
push esi
push ecx
call fcn.00402b00
add esp, 0xc
test eax, eax
je 0x4413d1
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x14]
dec edx
cmp eax, edx
jge 0x4413fc
mov ecx, dword [esp + 0x2c]
add eax, 0xa
mov dword [esp + 0x14], eax
neg eax
push eax
mov eax, dword [esp + 0x38]
push eax
push ecx
jmp 0x441370
mov edx, dword [esp + 0x38]
push edi
push esi
push edx
call fcn.00402b00
add esp, 0xc
test eax, eax
je 0x4413e8
xor ebx, ebx
jmp 0x4413fc
push edi
push esi
push ebp
call fcn.00402b00
add esp, 0xc
test eax, eax
je 0x4413fc
mov ebx, 1
cmp dword [0x66c0e0], 1
je 0x44141f
jmp 0x441173
push 1
call fcn.004234d0
push 0
push 0
push 3
call fcn.0040aa40
add esp, 0x10
lea edi, [esp + 0x74]
xor esi, esi
mov eax, dword [esp + esi + 0x84]
push eax
call fcn.00401a90
mov ecx, dword [esp + esi + 0x90]
push ecx
call fcn.004436a0
mov edx, dword [esp + esi + 0x30]
push edx
call fcn.00407cb0
mov eax, dword [esp + esi + 0x44]
push eax
call fcn.00401a90
add esp, 0x10
mov ebx, 2
mov ecx, dword [edi]
push ecx
call fcn.00401a90
add esp, 4
add edi, 4
dec ebx
jne 0x44145b
add esi, 4
cmp esi, 8
jl 0x441425
mov edx, dword [esp + 0x40]
push edx
call fcn.00401a90
mov eax, dword [esp + 0x5c]
push eax
call fcn.00401a90
mov ecx, dword [esp + 0x2c]
push ecx
call fcn.004016e0
mov edx, dword [esp + 0x58]
push edx
call fcn.00422680
push 8
push 8
push 1
push 2
push 0
call fcn.0040bd00
add esp, 0x24
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x188
ret