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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x194
mov ecx, dword [ebp + 8]
fld dword [ecx + 0x103c]
lea eax, [ecx + 0x101c]
fchs
mov edx, dword [eax]
fld dword [ecx + 0x1040]
mov dword [esp + 0x10], edx
mov edx, dword [eax + 4]
mov dword [esp + 0x14], edx
mov edx, dword [eax + 8]
fchs
fld dword [ecx + 0x1044]
mov dword [esp + 0x18], edx
fchs
fld dword [esp + 0x18]
mov eax, dword [eax + 0xc]
fmul st(2)
push ebx
fld dword [esp + 0x18]
push esi
fmul st(2)
push edi
mov dword [esp + 0x28], eax
fsubp st(1)
fstp dword [esp + 0x44]
fmul dword [esp + 0x1c]
fld dword [esp + 0x24]
fmul st(3)
fsubp st(1)
fstp dword [esp + 0x48]
fld dword [esp + 0x20]
fmulp st(2)
fmul dword [esp + 0x1c]
fsubp st(1)
fld dword [esp + 0x48]
fmul dword [esp + 0x24]
fld st(1)
fmul dword [esp + 0x20]
fsubp st(1)
fld st(1)
fmul dword [esp + 0x1c]
fld dword [esp + 0x24]
fmul dword [esp + 0x44]
fsubp st(1)
fstp dword [esp + 0x58]
fld dword [esp + 0x20]
fmul dword [esp + 0x44]
fld dword [esp + 0x48]
fmul dword [esp + 0x1c]
fsubp st(1)
fld st(0)
fld dword [esp + 0x58]
fld st(1)
fmulp st(2)
fld st(0)
fmul st(1)
faddp st(2)
fld st(3)
fmul st(4)
faddp st(2)
fxch st(1)
fsqrt
fstp st(1)
fcom dword [0x5bef98]
fnstsw ax
test ah, 0x44
jnp 0x45d0de
fdivr dword [0x5bef9c]
fxch st(2)
fmul st(2)
fstp dword [esp + 0x54]
fld dword [esp + 0x58]
fmul st(2)
fstp dword [esp + 0x58]
fmulp st(1)
fld dword [esp + 0x20]
fld dword [esp + 0x24]
fld st(1)
fmulp st(2)
fld st(0)
fmul st(1)
faddp st(2)
fld dword [esp + 0x1c]
fmul dword [esp + 0x1c]
faddp st(2)
fxch st(1)
fsqrt
fstp st(1)
fcom dword [0x5bef98]
fnstsw ax
test ah, 0x44
jnp 0x45d127
fdivr dword [0x5bef9c]
fld dword [esp + 0x1c]
fmul st(1)
fstp dword [esp + 0x1c]
fld dword [esp + 0x20]
fmul st(1)
fstp dword [esp + 0x20]
fmul dword [esp + 0x24]
fld st(2)
fld dword [esp + 0x48]
fld st(1)
fmulp st(2)
fld st(0)
fmul st(1)
faddp st(2)
fld dword [esp + 0x44]
fmul dword [esp + 0x44]
faddp st(2)
fxch st(1)
fsqrt
fstp st(1)
fcom dword [0x5bef98]
fnstsw ax
test ah, 0x44
jnp 0x45d172
fdivr dword [0x5bef9c]
fld dword [esp + 0x44]
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
fmul st(1)
fld dword [esp + 0x48]
mov dword [esp + 0xf4], eax
mov eax, dword [esp + 0x58]
fmul st(2)
mov dword [esp + 0x104], eax
mov dword [esp + 0xf0], edx
mov edx, dword [esp + 0x54]
fstp dword [esp + 0x48]
fxch st(4)
mov dword [esp + 0x100], edx
mov edx, dword [esp + 0x48]
fmul st(1)
mov dword [esp + 0x128], 0
mov dword [esp + 0x124], 0
fstp dword [esp + 0x4c]
mov eax, dword [esp + 0x4c]
fxch st(1)
mov dword [esp + 0x118], eax
mov al, byte [0x106d64c]
fstp dword [esp + 0xf8]
test al, 1
fxch st(1)
fstp dword [esp + 0x108]
mov dword [esp + 0x120], 0
fxch st(1)
mov dword [esp + 0x12c], 0x3f800000
fstp dword [esp + 0x110]
mov dword [esp + 0xfc], 0
mov dword [esp + 0x10c], 0
fstp st(0)
mov dword [esp + 0x114], edx
mov dword [esp + 0x11c], 0
jne 0x45d26e
or dword [0x106d64c], 1
mov dword [0x106d63c], 0
mov dword [0x106d640], 0
mov dword [0x106d644], 0
mov dword [0x106d648], 0
fild dword [0x1018f9c]
fmul dword [0x668ddc]
fmul dword [0x5bf048]
fstp dword [esp + 0x30]
fild dword [ecx + 0xef8]
fmul dword [0x668de0]
fstp dword [esp + 0x2c]
fld dword [esp + 0x30]
fsin
fstp dword [esp + 0x10]
fld dword [esp + 0x30]
fcos
fstp dword [esp + 0x40]
fld dword [esp + 0x40]
fmul dword [esp + 0x2c]
mov ecx, dword [ebp + 8]
fld dword [esp + 0x10]
xor edi, edi
fmul dword [esp + 0x2c]
push edi
fxch st(1)
fsub dword [0x106d63c]
fstp dword [esp + 0x78]
fld dword [0x106d640]
fchs
fstp dword [esp + 0x7c]
fsub dword [0x106d644]
fld dword [esp + 0x78]
fmul dword [0x5bf144]
fld dword [esp + 0x7c]
fmul dword [0x5bf144]
fstp dword [esp + 0x7c]
fxch st(1)
fmul dword [0x5bf144]
fstp dword [esp + 0x80]
fadd dword [0x106d63c]
fstp dword [0x106d63c]
fld dword [esp + 0x7c]
fadd dword [0x106d640]
fstp dword [0x106d640]
fld dword [esp + 0x80]
fadd dword [0x106d644]
fstp dword [0x106d644]
mov edx, dword [ecx]
call dword [edx + 0x64]
add eax, 0x60
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov dword [esp + 0x88], ecx
mov ecx, dword [eax + 8]
mov dword [esp + 0x8c], edx
mov edx, dword [eax + 0xc]
mov eax, dword [ebp + 8]
mov dword [esp + 0x90], ecx
mov ecx, dword [eax + 0xfe4]
add ecx, 0x60
mov dword [esp + 0x94], edx
mov edx, dword [ecx]
mov dword [esp + 0x98], edx
mov edx, dword [ecx + 4]
mov dword [esp + 0x9c], edx
mov edx, dword [ecx + 8]
mov ecx, dword [ecx + 0xc]
mov dword [esp + 0xa0], edx
mov dword [esp + 0xa4], ecx
or ecx, 0xffffffff
lea edx, [esp + 0x17]
push edx
add eax, 0x2d10
mov dword [esp + 0x88], 0x4479c000
mov dword [esp + 0x44], ecx
mov dword [esp + 0x30], 0x4479c000
mov dword [esp + 0x34], ecx
mov byte [esp + 0x1b], 0
call fcn.0043cad0
test al, al
je 0x45d3d6
mov byte [0xf918bd], 1
jmp 0x45d4c3
mov al, byte [0xf918bd]
test al, al
je 0x45d4bc
mov al, byte [esp + 0x17]
test al, al
je 0x45d47c
fld dword [0x605f54]
fmul dword [0x5bf034]
call fcn.00581d24
mov edx, dword [0x1018f9c]
mov ecx, dword [0x67d4f0]
add edx, eax
mov eax, dword [ebp + 8]
inc ecx
mov dword [0x1018f9c], edx
mov eax, dword [eax + 0xef8]
mov dword [0x67d4f0], ecx
lea ecx, [eax + 1]
mov dword [esp + 0x6c], ecx
mov ecx, dword [0x605f54]
mov dword [esp + 0x70], ecx
mov ecx, dword [0x1043b38]
cmp ecx, edi
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], 1
je 0x45d454
mov edx, dword [ecx]
lea eax, [esp + 0x64]
push eax
call dword [edx]
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0xfe4]
mov ecx, dword [edx + 0x14]
mov eax, dword [ecx]
call dword [eax]
mov ecx, dword [0x1043aec]
cmp ecx, edi
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], edi
je 0x45d4b3
lea eax, [esp + 0x34]
jmp 0x45d4ae
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0xef8]
lea ecx, [eax + 1]
mov dword [esp + 0x6c], ecx
mov ecx, dword [0x1043b38]
cmp ecx, edi
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], 3
mov dword [esp + 0x70], 0
je 0x45d4b3
lea eax, [esp + 0x64]
mov edx, dword [ecx]
push eax
call dword [edx]
mov eax, dword [ebp + 8]
inc dword [eax + 0xef8]
mov byte [0xf918bd], 0
mov ecx, dword [ebp + 8]
mov edx, dword [ecx]
push edi
call dword [edx + 0x64]
cmp dword [eax + 0x1c], 0x10
jne 0x45d4e2
mov al, byte [0xf918bd]
test al, al
mov byte [0x1018fc4], 0
je 0x45d4e9
mov byte [0x1018fc4], 1
mov ebx, dword [ebp + 8]
mov esi, dword [0x1043a70]
xor ecx, ecx
mov dword [esp + 0x3c], ecx
jmp 0x45d500
mov ecx, dword [esp + 0x3c]
mov edi, edi
fld dword [0x106d63c]
fadd dword [ecx + ebx + 0x4b1c]
fld dword [ecx + ebx + 0x4b20]
fadd dword [0x106d640]
fstp dword [esp + 0x138]
fld dword [ecx + ebx + 0x4b24]
fadd dword [0x106d644]
fstp dword [esp + 0x13c]
fsubr dword [esp + 0x88]
fld dword [esp + 0x8c]
fsub dword [esp + 0x138]
fld dword [esp + 0x90]
fsub dword [esp + 0x13c]
fld dword [0x106d63c]
fadd dword [ecx + ebx + 0x4b1c]
fld dword [ecx + ebx + 0x4b20]
fadd dword [0x106d640]
fld dword [ecx + ebx + 0x4b24]
fadd dword [0x106d644]
fstp dword [esp + 0x198]
fld dword [esp + 0x98]
fsub st(2)
fstp dword [esp + 0x54]
fld dword [esp + 0x9c]
fsub st(1)
fstp dword [esp + 0x58]
fstp st(0)
fstp st(0)
fld dword [esp + 0xa0]
fsub dword [esp + 0x198]
fstp dword [esp + 0x5c]
fstp dword [esp + 0x18]
fld st(0)
fmul st(1)
fld dword [esp + 0x18]
fmul dword [esp + 0x18]
faddp st(1)
fld st(2)
fmul st(3)
faddp st(1)
fsqrt
fstp st(2)
fstp st(0)
fstp dword [esp + 0x18]
fld dword [esp + 0x5c]
fld dword [esp + 0x58]
fld st(0)
fmul st(1)
fld st(2)
fmul st(3)
faddp st(1)
fld dword [esp + 0x54]
fmul dword [esp + 0x54]
faddp st(1)
fsqrt
fstp st(2)
fstp st(0)
fcom dword [0x5bef98]
fst dword [esp + 0x10]
fnstsw ax
test ah, 0x44
jnp 0x45d611
fdivr dword [0x5bef9c]
fld dword [esp + 0x54]
mov eax, dword [ebx + 0xfe4]
fmul st(1)
add eax, 0x50
mov edx, dword [eax]
fld dword [esp + 0x58]
fmul st(2)
mov dword [esp + 0x64], edx
mov edx, dword [eax + 4]
fld dword [esp + 0x5c]
fmul st(3)
mov dword [esp + 0x68], edx
mov edx, dword [eax + 8]
fld dword [esp + 0x64]
mov dword [esp + 0x6c], edx
fmul st(3)
mov eax, dword [eax + 0xc]
fld dword [esp + 0x6c]
mov dword [esp + 0x70], eax
fmul st(2)
faddp st(1)
fld dword [esp + 0x68]
fmul st(3)
faddp st(1)
fadd dword [0x5bf0c0]
fmul dword [esp + 0x10]
fstp st(4)
fstp st(0)
fstp st(0)
fstp st(0)
fld dword [esp + 0x18]
fcomp dword [0x5bf038]
fnstsw ax
test ah, 5
jp 0x45d83f
mov al, byte [0xf918bd]
test al, al
jne 0x45d83f
mov al, byte [esp + 0x17]
test al, al
jne 0x45d83f
mov al, byte [ecx + ebx + 0x4b2c]
fstp st(0)
test al, al
jne 0x45d970
mov edx, dword [ebx]
push 0
mov ecx, ebx
call dword [edx + 0x64]
cmp dword [eax + 0x1c], 0x10
mov esi, dword [0x1043a70]
jne 0x45d969
test esi, esi
mov eax, dword [ebp + 8]
mov ecx, dword [esp + 0x3c]
mov ebx, str.CHALLENGE_TARGET_HIT
mov byte [ecx + eax + 0x4b2c], 1
mov dword [esp + 0xd8], ebx
mov dword [esp + 0xdc], edi
mov byte [esp + 0xe0], 0
je 0x45d709
mov edx, dword [esi]
lea eax, [esp + 0xd8]
push eax
mov ecx, esi
call dword [edx]
mov esi, dword [0x1043a70]
test esi, esi
mov dword [esp + 0xc0], ebx
mov dword [esp + 0xc4], edi
mov byte [esp + 0xc8], 1
je 0x45d737
mov edx, dword [esi]
lea eax, [esp + 0xc0]
push eax
mov ecx, esi
call dword [edx]
mov esi, dword [0x1043a70]
test esi, esi
mov dword [esp + 0xb4], str.CHALLENGE_TARGET_OUT_OF_RANGE
mov dword [esp + 0xb8], edi
mov byte [esp + 0xbc], 0
je 0x45d769
mov edx, dword [esi]
lea eax, [esp + 0xb4]
push eax
mov ecx, esi
call dword [edx]
mov esi, dword [0x1043a70]
test esi, esi
mov dword [esp + 0xe4], str.CHALLENGE_TARGET_IN_RANGE
mov dword [esp + 0xe8], edi
mov byte [esp + 0xec], 0
je 0x45d79b
mov edx, dword [esi]
lea eax, [esp + 0xe4]
push eax
mov ecx, esi
call dword [edx]
mov esi, dword [0x1043a70]
mov ebx, dword [ebp + 8]
mov eax, dword [ebx + 0xef8]
lea ecx, [eax + 1]
mov dword [esp + 0x7c], ecx
mov ecx, dword [0x1043b38]
test ecx, ecx
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], 2
mov dword [esp + 0x80], 0
je 0x45d7de
mov edx, dword [ecx]
lea eax, [esp + 0x74]
push eax
call dword [edx]
mov ebx, dword [ebp + 8]
mov esi, dword [0x1043a70]
mov eax, dword [ebx + 0x2358]
test eax, eax
mov dword [esp + 0x10], eax
je 0x45d812
lea esi, [ebx + 0xf20]
call fcn.0043d950
mov esi, dword [ebp + 8]
mov ecx, dword [esp + 0x10]
add esi, 0x2d10
call fcn.0043c190
mov ebx, dword [ebp + 8]
mov esi, dword [0x1043a70]
mov ecx, dword [0x1043ae8]
test ecx, ecx
mov dword [esp + 0x10], 0
je 0x45d970
mov edx, dword [ecx]
lea eax, [esp + 0x10]
push eax
call dword [edx]
mov ebx, dword [ebp + 8]
mov esi, dword [0x1043a70]
jmp 0x45d970
mov al, byte [ecx + ebx + 0x4b2c]
test al, al
jne 0x45d96e
fld dword [esp + 0x18]
fcomp dword [esp + 0x84]
fnstsw ax
test ah, 5
jp 0x45d86f
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x84], ecx
mov dword [esp + 0x40], edi
fcom dword [esp + 0x2c]
fnstsw ax
test ah, 5
jp 0x45d882
fst dword [esp + 0x2c]
mov dword [esp + 0x30], edi
fcomp dword [0x605f50]
fnstsw ax
test ah, 5
jp 0x45d908
test esi, esi
mov dword [esp + 0xa8], str.CHALLENGE_TARGET_OUT_OF_RANGE
mov dword [esp + 0xac], edi
mov byte [esp + 0xb0], 0
je 0x45d8c4
mov edx, dword [esi]
lea eax, [esp + 0xa8]
push eax
mov ecx, esi
call dword [edx]
mov ebx, dword [ebp + 8]
mov esi, dword [0x1043a70]
test esi, esi
mov dword [esp + 0xcc], str.CHALLENGE_TARGET_IN_RANGE
mov dword [esp + 0xd0], edi
mov byte [esp + 0xd4], 1
je 0x45d8f9
mov edx, dword [esi]
lea eax, [esp + 0xcc]
push eax
mov ecx, esi
call dword [edx]
mov ebx, dword [ebp + 8]
mov esi, dword [0x1043a70]
mov ecx, dword [0x1018f24]
mov dword [edi*4 + 0x1018f68], ecx
jmp 0x45d970
test esi, esi
mov dword [esp + 0x44], str.CHALLENGE_TARGET_OUT_OF_RANGE
mov dword [esp + 0x48], edi
mov byte [esp + 0x4c], 1
je 0x45d931
mov edx, dword [esi]
lea eax, [esp + 0x44]
push eax
mov ecx, esi
call dword [edx]
mov ebx, dword [ebp + 8]
mov esi, dword [0x1043a70]
test esi, esi
mov dword [esp + 0x1c], str.CHALLENGE_TARGET_IN_RANGE
mov dword [esp + 0x20], edi
mov byte [esp + 0x24], 0
je 0x45d95a
mov edx, dword [esi]
lea eax, [esp + 0x1c]
push eax
mov ecx, esi
call dword [edx]
mov ebx, dword [ebp + 8]
mov esi, dword [0x1043a70]
mov ecx, dword [0x1019010]
mov dword [edi*4 + 0x1018f68], ecx
jmp 0x45d970
mov ebx, dword [ebp + 8]
jmp 0x45d970
fstp st(0)
movzx edx, byte [edi*4 + 0x1019027]
movzx eax, byte [edi*4 + 0x1019026]
movzx ecx, byte [edi*4 + 0x1019025]
mov dword [esp + 0x10], edx
mov edx, dword [edi*4 + 0x1019024]
fild dword [esp + 0x10]
mov dword [esp + 0x10], eax
lea eax, [edi*4 + 0x1019024]
fmul dword [0x5beff4]
and edx, 0xff
test edx, edx
fild dword [esp + 0x10]
mov dword [esp + 0x10], ecx
fmul dword [0x5beff4]
mov dword [esp + 0x34], edx
fild dword [esp + 0x10]
fmul dword [0x5beff4]
fstp dword [esp + 0x18]
fild dword [esp + 0x34]
jge 0x45d9dc
fadd dword [0x5befa4]
movzx ecx, byte [edi*4 + 0x1018f6b]
movzx edx, byte [edi*4 + 0x1018f6a]
mov dword [esp + 0x34], ecx
fmul dword [0x5beff4]
movzx ecx, byte [edi*4 + 0x1018f69]
sub esp, 0x10
fstp dword [esp + 0x20]
fild dword [esp + 0x44]
mov dword [esp + 0x44], edx
mov edx, dword [edi*4 + 0x1018f68]
fmul dword [0x5beff4]
and edx, 0xff
test edx, edx
fsub st(2)
fmul dword [0x5bf1b4]
fadd st(2)
fstp dword [esp + 0xc]
fild dword [esp + 0x44]
mov dword [esp + 0x44], ecx
fmul dword [0x5beff4]
fsub st(1)
fmul dword [0x5bf1b4]
fadd st(1)
fstp dword [esp + 8]
fstp st(0)
fstp st(0)
fild dword [esp + 0x44]
mov dword [esp + 0x44], edx
fmul dword [0x5beff4]
fsub dword [esp + 0x28]
fmul dword [0x5bf1b4]
fadd dword [esp + 0x28]
fstp dword [esp + 4]
fild dword [esp + 0x44]
jge 0x45da7c
fadd dword [0x5befa4]
fmul dword [0x5beff4]
fsub dword [esp + 0x20]
fmul dword [0x5bf1b4]
fadd dword [esp + 0x20]
fstp dword [esp]
push eax
call fcn.00459050
fld dword [0x106d63c]
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x184], 1
fadd dword [eax + ebx + 0x4b1c]
fld dword [eax + ebx + 0x4b20]
mov edx, edi
fadd dword [0x106d640]
fld dword [eax + ebx + 0x4b24]
and edx, 1
fadd dword [0x106d644]
lea eax, [eax + ebx + 0x4b2c]
mov dword [esp + 0x170], 0
fstp dword [esp + 0x14c]
mov ecx, dword [esp + 0x14c]
fxch st(1)
fstp dword [esp + 0x164]
mov dword [esp + 0x16c], ecx
xor ecx, ecx
fstp dword [esp + 0x168]
mov dword [esp + 0x180], edx
mov dword [esp + 0x17c], edi
cmp byte [eax], 0
sete cl
mov dword [esp + 0x34], ecx
fild dword [esp + 0x34]
fstp dword [esp + 0x174]
mov cl, byte [eax]
test cl, cl
mov eax, 0x1019068
jne 0x45db42
lea eax, [edi*4 + 0x1019024]
mov edx, dword [eax]
mov dword [esp + 0x178], edx
lea ecx, [esp + 0xf0]
lea edx, [esp + 0x154]
call fcn.00407130
mov ecx, dword [0x10439d4]
test ecx, ecx
mov eax, 1
mov dword [esp + 0x188], eax
mov dword [esp + 0x18c], eax
je 0x45db90
mov eax, dword [ecx]
lea edx, [esp + 0x154]
push edx
call dword [eax]
mov ebx, dword [ebp + 8]
mov esi, dword [0x1043a70]
mov eax, dword [esp + 0x3c]
add eax, 0x14
inc edi
cmp eax, 0x64
mov dword [esp + 0x3c], eax
jl 0x45d4fa
mov eax, dword [esp + 0x40]
test eax, eax
mov byte [0x1018f85], 0
jl 0x45dc45
fld dword [0x106d63c]
lea eax, [eax + eax*4]
fadd dword [ebx + eax*4 + 0x4b1c]
lea eax, [ebx + eax*4 + 0x4b1c]
fld dword [eax + 4]
fadd dword [0x106d640]
fld dword [eax + 8]
mov dword [0x1018fc0], 0
fadd dword [0x106d644]
fstp dword [esp + 0x14c]
mov ecx, dword [esp + 0x14c]
fxch st(1)
mov dword [0x1018fbc], ecx
fstp dword [0x1018fb4]
mov ecx, dword [esp + 0x30]
test ecx, ecx
fstp dword [0x1018fb8]
jl 0x45dc36
fld dword [esp + 0x2c]
fcomp dword [0x605f50]
fnstsw ax
test ah, 5
jp 0x45dc36
mov al, byte [0xf918bd]
test al, al
jne 0x45dc36
mov byte [0x1018f85], 1
mov dword [ebx + 0x4b80], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov edx, dword [esp + 0x30]
pop edi
pop esi
mov dword [ebx + 0x4b80], edx
pop ebx
mov esp, ebp
pop ebp
ret 4