Function at 0x403c50
Capabilities:
Terminate process

Disassembly:
sub esp, 0x38
push ebx
push ebp
mov ebp, dword [esp + 0x44]
push esi
mov ebx, eax
mov eax, 0x404130
push edi
push 0x828
mov dword [esp + 0x3c], 0x404100
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], eax
call dword [sym.imp.MSVCR90.dll_malloc]
mov esi, eax
add esp, 4
test esi, esi
jne 0x403cc3
push str.Not_enough_memory
push str._nError:__s__n
call fcn.00406b70
push 0x7d0
push str.Code__d
push 2
lea eax, [esp + 0x24]
push str.signal_termination_handler
push eax
mov dword [esp + 0x2c], str.Signal_termination_handler_called
call fcn.00406a30
add esp, 0x1c
push 3
call dword [sym.imp.MSVCR90.dll_exit]
mov edx, ebx
call fcn.00403ef0
fld qword [esp + 0x50]
mov word [esi + 0x18], ax
fstp qword [esi + 8]
movzx eax, ax
add eax, eax
add eax, eax
mov dword [esi + 4], ebx
call fcn.00407310
mov dword [esi + 0x81c], eax
movzx eax, word [esi + 0x18]
add eax, eax
add eax, eax
call fcn.00407310
mov dword [esi + 0x820], eax
xor ecx, ecx
xor eax, eax
mov dword [esi], ebp
cmp cx, word [esi + 0x18]
jae 0x403d2c
fldz
mov edx, dword [esi + 0x81c]
mov dword [edx + eax*4], 0
mov ecx, dword [esi + 0x820]
fst dword [ecx + eax*4]
movzx edx, word [esi + 0x18]
inc eax
cmp eax, edx
jl 0x403d0b
fstp st(0)
movzx ax, byte [ebp + 0x47bcd0]
mov cx, word [esi + 0x18]
sub cx, ax
movzx eax, cx
movzx edx, ax
and edx, 0x80000001
jns 0x403d4e
dec edx
or edx, 0xfffffffe
inc edx
je 0x403d51
inc eax
fld qword [esp + 0x50]
sub esp, 8
fstp qword [esp]
push eax
call fcn.00403fd0
fstp qword [esi + 0x10]
movzx eax, word [esi + 0x18]
movzx ecx, ax
mov dword [esp + 0x1c], ecx
shr ax, 1
fild dword [esp + 0x1c]
add esp, 0xc
and ecx, 0x80000001
fld1
fdivrp st(1)
movzx edi, ax
fst qword [esp + 0x30]
jns 0x403d91
dec ecx
or ecx, 0xfffffffe
inc ecx
je 0x403d99
fmul qword [0x477040]
mov eax, dword [esp + ebp*4 + 0x38]
fstp qword [esp + 0x18]
fldz
push 0x200
fstp qword [esp + 0x24]
mov dword [esp + 0x14], eax
call dword [esp + 0x14]
fstp qword [esp + 0x2c]
add esp, 4
mov dword [esp + 0x14], ebx
fild dword [esp + 0x14]
mov eax, 0x200
test ebx, ebx
jge 0x403dd2
fadd qword [0x477020]
fstp qword [esp + 0x38]
lea ebx, [esi + 0x41a]
jmp 0x403de6
fstp st(2)
fstp st(0)
fstp st(0)
lea ebp, [eax + 1]
push ebp
call dword [esp + 0x14]
fld qword [esp + 0x2c]
fadd st(1)
add esp, 4
fld qword [0x477040]
fmul st(1), st(0)
fld st(1)
fadd qword [esp + 0x20]
fst qword [esp + 0x20]
fld qword [esp + 0x18]
fcom st(1)
fnstsw ax
test ah, 5
jp 0x403e2d
movzx ecx, word [esi + 0x18]
movzx edx, di
dec ecx
cmp edx, ecx
jge 0x403e23
inc edi
fadd qword [esp + 0x30]
fstp qword [esp + 0x18]
jmp 0x403e2f
fstp st(0)
fld qword [esp + 0x38]
mov word [ebx], di
mov ecx, dword [esi + 0x820]
fld st(0)
fmulp st(4)
movzx eax, di
fxch st(3)
lea eax, [ecx + eax*4]
add ebx, 2
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fadd dword [eax]
fstp dword [eax]
mov eax, ebp
cmp eax, 0x400
fxch st(3)
fstp qword [esp + 0x28]
jl 0x403de0
mov eax, dword [esi + 0x820]
fsubrp st(2)
movzx edx, di
lea eax, [eax + edx*4]
fmulp st(1)
mov edx, 0x3ff
lea ecx, [esi + 0x1a]
lea edi, [esi + 0x818]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fadd dword [eax]
fstp dword [eax]
xor eax, eax
mov bx, word [esi + 0x18]
sub bx, word [edi]
inc eax
dec bx
mov word [ecx], bx
dec edx
add ecx, 2
sub edi, 2
cmp eax, edx
jl 0x403e96
movzx ecx, word [esi + 0x18]
xor eax, eax
sub ecx, 1
js 0x403ed7
lea esp, [esp]
mov edx, dword [esi + 0x820]
fld dword [edx + ecx*4]
inc eax
fadd dword [edx + eax*4 - 4]
dec ecx
cmp eax, ecx
fstp dword [edx + eax*4 - 4]
jle 0x403ec0
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret