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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x158
push esi
push edi
mov edi, dword [ebp + 0xc]
mov esi, ecx
mov dword [esp + 0x28], edx
mov dword [esp + 0x20], esi
mov eax, dword [edi + 0x1c]
mov eax, dword [eax + 4]
cmp dword [0x1015ca08], eax
je 0x1009ee29
mov ecx, dword [edx + 0x18]
push dword [edx]
mov dword [0x1015ca08], eax
xor edx, edx
mov eax, dword [ecx]
push dword [eax + 0x138]
lea eax, [esp + 0x34]
push eax
call fcn.1009e0f0
test eax, eax
je 0x1009e363
mov ecx, dword [eax]
xor edx, edx
push 0
push dword [0x1015c940]
push dword [ecx + 0x24]
lea ecx, [esp + 0x38]
push ecx
mov ecx, eax
call fcn.1009e0f0
fmul dword [0x1014b328]
xor ecx, ecx
fstp dword [esp + 0x24]
cvttss2si eax, dword [esp + 0x24]
test eax, eax
cmovs eax, ecx
jmp 0x1009e365
xor eax, eax
mov ecx, 0x10156934
xchg dword [ecx], eax
push 0x1015c960
call fcn.100fcc16
add esp, 4
test eax, eax
jne 0x1009ee31
mov eax, dword [0x1015c9cc]
mov edx, dword [0x1015c9dc]
push ecx
mov ecx, dword [0x1015c9d8]
mov dword [0x1015c9d0], eax
call fcn.100a2230
mov eax, dword [0x1015c9d8]
mov edx, dword [0x1015ca00]
mov dword [0x1015c9dc], eax
mov eax, dword [0x1015c9e4]
mov dword [0x1015c9e8], eax
mov eax, dword [0x1015c9f0]
push ecx
mov ecx, dword [0x1015c9fc]
mov dword [0x1015c9f4], eax
call fcn.100a21b0
mov ecx, dword [esp + 0x28]
mov eax, dword [0x1015c9fc]
mov dword [0x1015ca00], eax
mov eax, dword [ecx]
mov dword [esp + 0xc], eax
mov eax, dword [ecx + 0x18]
mov dword [esp + 0x10], eax
lea eax, [esp + 0xc]
push eax
call fcn.1009ef60
mov eax, dword [edi + 0x20]
cmp dword [eax + 0xc], 0
jle 0x1009e589
mov eax, dword [edi + 0x80]
mov eax, dword [eax]
mov dword [esp + 0x24], eax
test eax, eax
je 0x1009e427
mov ecx, 0x51df5f2d
call fcn.100e7b40
mov ecx, dword [esp + 0x24]
cmp byte [eax + ecx], 0
je 0x1009e589
mov eax, dword [edi + 0x20]
mov eax, dword [eax]
mov eax, dword [eax]
mov dword [esp + 0x14], eax
test eax, eax
je 0x1009e589
mov ecx, 0x14412283
call fcn.100e7b40
mov ecx, dword [esp + 0x14]
cmp byte [eax + ecx], 0
je 0x1009e589
mov ecx, 0xe21102ff
call fcn.100e7b40
mov ecx, dword [esp + 0x14]
movss xmm0, dword [eax + ecx]
mov ecx, 0x950a4cd9
movss dword [0x1015c918], xmm0
call fcn.100e7b40
mov ecx, dword [esp + 0x14]
movss xmm0, dword [eax + ecx]
mov ecx, 0x7904fab6
movss dword [0x1015c91c], xmm0
call fcn.100e7b40
mov ecx, dword [esp + 0x14]
mov eax, dword [eax + ecx]
mov dword [0x1015c920], eax
cmp eax, 0xffffffff
je 0x1009e4d9
mov ecx, 0x481cae9d
call fcn.100e7b40
mov ecx, dword [esp + 0x14]
movss xmm0, dword [eax + ecx]
mov ecx, 0xf9000a4a
movss dword [0x1015c924], xmm0
call fcn.100e7b40
mov ecx, dword [esp + 0x14]
movss xmm0, dword [eax + ecx]
movss dword [0x1015c928], xmm0
mov eax, dword [edi + 0x78]
mov edi, dword [eax]
test edi, edi
je 0x1009e593
mov ecx, 0xec5d89e5
call fcn.100e7b40
mov esi, eax
mov ecx, 0x8f93736b
add esi, dword [esp + 0x14]
call fcn.100e7b40
movss xmm5, dword [esi]
mov ecx, 0x909374fe
movss xmm4, dword [esi + 4]
movaps xmm2, xmm5
movss xmm3, dword [esi + 8]
movaps xmm1, xmm4
subss xmm2, dword [eax + edi]
subss xmm1, dword [eax + edi + 4]
movaps xmm0, xmm3
subss xmm0, dword [eax + edi + 8]
call fcn.100e7b40
mulss xmm1, xmm1
mov esi, dword [esp + 0x20]
mulss xmm2, xmm2
subss xmm4, dword [eax + edi + 4]
subss xmm5, dword [eax + edi]
subss xmm3, dword [eax + edi + 8]
addss xmm1, xmm2
mulss xmm0, xmm0
xor eax, eax
mulss xmm4, xmm4
mulss xmm5, xmm5
mulss xmm3, xmm3
addss xmm1, xmm0
addss xmm4, xmm5
xorps xmm0, xmm0
sqrtss xmm1, xmm1
addss xmm4, xmm3
sqrtss xmm0, xmm4
comiss xmm1, xmm0
seta al
mov dword [0x1015c92c], eax
jmp 0x1009e593
mov dword [0x1015c918], 0
mov eax, dword [0x1015692c]
cmp dword [eax], 0
jne 0x1009e605
mov edi, dword [0x1015c9c4]
mov esi, dword [0x1015c9c0]
cmp esi, edi
je 0x1009e5c7
nop dword [eax]
mov ecx, esi
call fcn.100a3110
add esi, 0xc8
cmp esi, edi
jne 0x1009e5b0
mov esi, dword [0x1015c9c0]
mov edi, dword [0x10156a18]
mov dword [0x1015c9c4], esi
mov dword [0x10156a18], 0
test edi, edi
je 0x1009ee1c
mov esi, dword [edi]
lea ecx, [edi + 0x5c]
call fcn.100a0d10
push 0x68
push edi
call fcn.100fa9c7
add esp, 8
mov edi, esi
test esi, esi
jne 0x1009e5e5
jmp 0x1009ee1c
mov edx, dword [esp + 0x28]
mov ecx, dword [edx + 0x18]
push dword [edx]
xor edx, edx
mov eax, dword [ecx]
push dword [eax + 0x94]
lea eax, [esp + 0x34]
push eax
call fcn.1009e0f0
push dword [0x1015c940]
xor edx, edx
movups xmm0, xmmword [eax]
movups xmmword [0x1015c8d8], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [0x1015c8e8], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [0x1015c8f8], xmm0
movups xmm0, xmmword [eax + 0x30]
mov eax, dword [0x1015692c]
movups xmmword [0x1015c908], xmm0
mov ecx, dword [eax]
mov eax, dword [ecx]
push dword [eax + 0x498]
lea eax, [esp + 0x34]
push eax
call fcn.1009e0f0
cmp eax, 4
jne 0x1009e69a
mov eax, dword [0x1015692c]
xor edx, edx
push dword [0x1015c940]
mov ecx, dword [eax]
mov eax, dword [ecx]
push dword [eax + 0x49c]
lea eax, [esp + 0x34]
push eax
call fcn.1009e0f0
mov dword [esp + 0x14], eax
jmp 0x1009e6a2
mov dword [esp + 0x14], 0
mov ecx, dword [esi + 0xc]
xor edx, edx
push dword [esi]
mov eax, dword [ecx]
push dword [eax + 0x18]
lea eax, [esp + 0x34]
push eax
call fcn.1009e0f0
mov edx, 1
mov dword [esp + 0x18], eax
mov dword [esp + 0x24], edx
cmp eax, edx
jl 0x1009ec1a
jmp 0x1009e6d4
mov esi, dword [esp + 0x20]
mov ecx, dword [esi + 0xc]
push edx
push dword [esi]
xor edx, edx
mov eax, dword [ecx]
push dword [eax + 0xc]
lea eax, [esp + 0xb8]
push eax
call fcn.1009e0f0
mov esi, dword [0x1015c940]
mov edi, eax
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], edi
test edi, edi
je case.0x1009e98f.10
mov ecx, dword [edi]
lea eax, [esp + 0xb8]
push esi
xor edx, edx
push dword [ecx + 0x278]
mov ecx, edi
push eax
call fcn.1009e0f0
test al, al
je 0x1009e8d8
mov eax, dword [0x1015692c]
cmp edi, dword [eax]
je case.0x1009e98f.10
cmp edi, dword [esp + 0x14]
je case.0x1009e98f.10
mov eax, dword [edi]
xor edx, edx
push esi
mov ecx, edi
push dword [eax + 8]
lea eax, [esp + 0xcc]
push eax
call fcn.1009e0f0
mov ecx, dword [0x1015c9c0]
mov edx, dword [eax]
mov eax, dword [0x1015c9c4]
cmp ecx, eax
je 0x1009e776
cmp dword [ecx + 0x60], edx
je 0x1009e7a0
add ecx, 0xc8
cmp ecx, eax
jne 0x1009e767
lea ecx, [esp + 0xc]
push ecx
push dword [ebp + 0xc]
push dword [ebp + 8]
push dword [esp + 0x34]
cmp eax, dword [0x1015c9c8]
je 0x1009e7be
mov ecx, eax
call fcn.1009f7f0
add dword [0x1015c9c4], 0xc8
jmp 0x1009e7c4
cmp ecx, eax
je 0x1009e776
test ecx, ecx
je 0x1009e776
lea eax, [esp + 0xc]
push eax
push dword [ebp + 0xc]
push dword [ebp + 8]
push dword [esp + 0x34]
call fcn.1009fa00
jmp 0x1009e7c4
push eax
call fcn.100a0f40
mov edi, dword [esp + 0x10]
xor edx, edx
mov eax, dword [edi + 8]
lea ecx, [edi + 8]
mov esi, dword [esp + 0xc]
push esi
push dword [eax + 0x24]
lea eax, [esp + 0xd8]
push eax
call fcn.1009e0f0
test al, al
jne case.0x1009e98f.10
mov eax, dword [edi]
xor edx, edx
push esi
mov ecx, edi
push dword [eax + 0x270]
lea eax, [esp + 0xe4]
push eax
call fcn.1009e0f0
test al, al
jne case.0x1009e98f.10
mov eax, dword [edi]
xor edx, edx
push esi
mov ecx, edi
push dword [eax + 0x49c]
lea eax, [esp + 0xf0]
push eax
call fcn.1009e0f0
mov ecx, dword [0x1015c940]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], ecx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x30], eax
test eax, eax
je case.0x1009e98f.10
mov ecx, dword [0x1015692c]
cmp eax, dword [ecx]
sete al
mov byte [esp + 0x1e], al
mov byte [esp + 0x1f], al
mov eax, dword [0x1015c9d0]
mov dword [esp + 0x38], eax
cmp eax, dword [0x1015c9d4]
je 0x1009e8be
mov eax, dword [edi]
xor edx, edx
push esi
mov ecx, edi
push dword [eax + 8]
lea eax, [esp + 0xfc]
push eax
call fcn.1009e0f0
mov esi, dword [esp + 0x38]
xor edx, edx
mov ecx, dword [esp + 0x3c]
push dword [esp + 0x40]
mov eax, dword [eax]
mov dword [esi], eax
mov eax, dword [ecx]
push dword [eax + 8]
lea eax, [esp + 0x108]
push eax
call fcn.1009e0f0
mov eax, dword [eax]
mov dword [esi + 4], eax
mov al, byte [esp + 0x1e]
mov byte [esi + 8], al
add dword [0x1015c9d0], 0xc
jmp case.0x1009e98f.10
lea ecx, [esp + 0x1f]
push ecx
lea ecx, [esp + 0x30]
push ecx
lea ecx, [esp + 0x14]
push ecx
push eax
call fcn.100a11a0
jmp case.0x1009e98f.10
mov eax, dword [edi + 8]
lea ecx, [edi + 8]
push esi
xor edx, edx
push dword [eax + 0x24]
lea eax, [esp + 0x114]
push eax
call fcn.1009e0f0
test al, al
jne case.0x1009e98f.10
mov eax, dword [edi]
xor edx, edx
push esi
mov ecx, edi
push dword [eax + 0x298]
lea eax, [esp + 0x120]
push eax
call fcn.1009e0f0
test al, al
je 0x1009e95e
mov ecx, 0x4116fe0f
call fcn.100e7b40
cmp dword [eax + edi], 0xffffffff
jne case.0x1009e98f.10
mov eax, dword [0x1015c9dc]
lea ecx, [esp + 0xc]
push ecx
push dword [ebp + 8]
cmp eax, dword [0x1015c9e0]
je 0x1009e953
mov ecx, eax
call fcn.100a0400
add dword [0x1015c9dc], 0x74
jmp case.0x1009e98f.10
push eax
call fcn.100a1410
jmp case.0x1009e98f.10
mov eax, dword [edi + 8]
lea ecx, [edi + 8]
push esi
xor edx, edx
push dword [eax + 8]
lea eax, [esp + 0x12c]
push eax
call fcn.1009e0f0
mov eax, dword [eax + 0x14]
add eax, 0xfffffff7
cmp eax, 0x98
ja case.0x1009e98f.10
movzx eax, byte [eax + 0x1009ee54]
jmp dword [eax*4 + 0x1009ee38]
mov eax, dword [edi + 4]
lea ecx, [edi + 4]
push esi
xor edx, edx
push dword [eax + 0xc]
lea eax, [esp + 0x138]
push eax
call fcn.1009e0f0
test al, al
jne case.0x1009e98f.29
mov eax, dword [edi]
xor edx, edx
push esi
mov ecx, edi
push dword [eax + 8]
lea eax, [esp + 0x144]
push eax
call fcn.1009e0f0
mov ecx, dword [0x10156a18]
test ecx, ecx
je case.0x1009e98f.10
mov eax, dword [eax]
nop word [eax + eax]
cmp dword [ecx + 0x54], eax
je 0x1009e9f0
mov ecx, dword [ecx]
test ecx, ecx
jne 0x1009e9e0
jmp case.0x1009e98f.10
test ecx, ecx
je case.0x1009e98f.10
mov byte [ecx + 0x50], 1
jmp case.0x1009e98f.10
mov eax, dword [edi]
xor edx, edx
push esi
mov ecx, edi
push dword [eax + 8]
lea eax, [esp + 0x150]
push eax
call fcn.1009e0f0
mov esi, dword [0x10156a18]
test esi, esi
je 0x1009ea2f
mov eax, dword [eax]
cmp dword [esi + 0x54], eax
je 0x1009ea62
mov esi, dword [esi]
test esi, esi
jne 0x1009ea24
push 0x68
call fcn.100faea5
add esp, 4
mov esi, eax
lea eax, [esp + 0xc]
push eax
push dword [ebp + 0xc]
lea ecx, [esi + 4]
push dword [esp + 0x28]
call fcn.1009f5c0
mov ecx, dword [0x10156a18]
mov dword [esi], ecx
mov dword [0x10156a18], esi
jmp case.0x1009e98f.10
test esi, esi
je 0x1009ea2f
lea eax, [esp + 0xc]
push eax
lea ecx, [esp + 0x54]
call fcn.1009f280
movups xmm0, xmmword [esp + 0x50]
mov ecx, dword [esp + 0x10]
xor edx, edx
mov eax, dword [esp + 0x98]
push dword [esp + 0xc]
movups xmmword [esi + 4], xmm0
movups xmm0, xmmword [esp + 0x64]
movups xmmword [esi + 0x14], xmm0
movups xmm0, xmmword [esp + 0x74]
movups xmmword [esi + 0x24], xmm0
movups xmm0, xmmword [esp + 0x84]
movups xmmword [esi + 0x34], xmm0
movq xmm0, qword [esp + 0x94]
movq qword [esi + 0x44], xmm0
mov dword [esi + 0x4c], eax
mov eax, dword [ecx]
push dword [eax + 0x28]
lea eax, [esp + 0x15c]
push eax
call fcn.1009e0f0
lea edi, [esi + 0x5c]
mov edx, eax
mov esi, dword [edi + 4]
mov ecx, esi
mov eax, dword [edi]
sub ecx, eax
sar ecx, 4
cmp ecx, 1
jb 0x1009eb1e
add ecx, ecx
movss xmm0, dword [eax + ecx*8 - 0xc]
ucomiss xmm0, dword [edx]
lahf
test ah, 0x44
jp 0x1009eb1e
mov eax, dword [edi]
movss xmm0, dword [eax + ecx*8 - 8]
ucomiss xmm0, dword [edx + 4]
lahf
test ah, 0x44
jp 0x1009eb1e
mov eax, dword [edi]
movss xmm0, dword [eax + ecx*8 - 4]
ucomiss xmm0, dword [edx + 8]
lahf
test ah, 0x44
jnp case.0x1009e98f.10
mov eax, dword [ebp + 0xc]
mov eax, dword [eax + 0x1c]
cmp esi, dword [edi + 8]
je 0x1009eb45
mov eax, dword [eax]
mov dword [esi], eax
movq xmm0, qword [edx]
movq qword [esi + 4], xmm0
mov eax, dword [edx + 8]
mov dword [esi + 0xc], eax
add dword [edi + 4], 0x10
jmp case.0x1009e98f.10
push edx
push eax
push esi
mov ecx, edi
call fcn.100a1c80
jmp case.0x1009e98f.10
mov eax, dword [edi + 4]
lea ecx, [edi + 4]
push esi
xor edx, edx
push dword [eax + 0x20]
lea eax, [esp + 0x4c]
push eax
call fcn.1009e0f0
test eax, eax
je case.0x1009e98f.10
add eax, 4
push str.challenge_coin
push eax
call fcn.100fd690
add esp, 8
test eax, eax
je case.0x1009e98f.10
mov eax, dword [0x1015c9e8]
lea ecx, [esp + 0xc]
push ecx
cmp eax, dword [0x1015c9ec]
je 0x1009ebad
mov ecx, eax
call fcn.1009f400
add dword [0x1015c9e8], 0x50
jmp case.0x1009e98f.10
push eax
call fcn.100a1620
jmp case.0x1009e98f.10
mov eax, dword [0x1015c9f4]
lea ecx, [esp + 0xc]
push ecx
cmp eax, dword [0x1015c9f8]
je 0x1009ebd7
mov ecx, eax
call fcn.100a0910
add dword [0x1015c9f4], 0x50
jmp case.0x1009e98f.10
push eax
call fcn.100a1870
jmp case.0x1009e98f.10
mov eax, dword [0x1015ca00]
lea ecx, [esp + 0xc]
push ecx
cmp eax, dword [0x1015ca04]
je 0x1009ec01
mov ecx, eax
call fcn.100a0a30
add dword [0x1015ca00], 0xc
jmp case.0x1009e98f.10
push eax
call fcn.100a1ac0
mov edx, dword [esp + 0x24]
inc edx
mov dword [esp + 0x24], edx
cmp edx, dword [esp + 0x18]
jle 0x1009e6d0
mov esi, dword [0x1015c9c4]
mov eax, 0x51eb851f
mov ecx, dword [0x1015c9c0]
sub esi, ecx
imul esi
mov byte [esp + 0x18], 0
push dword [esp + 0x18]
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [0x1015c9c4]
push eax
call fcn.100a25f0
mov esi, dword [0x1015c9dc]
mov eax, 0x8d3dcb09
mov ecx, dword [0x1015c9d8]
sub esi, ecx
imul esi
mov byte [esp + 0x18], 0
push dword [esp + 0x18]
add edx, esi
sar edx, 6
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [0x1015c9dc]
push eax
call fcn.100a2850
mov esi, dword [0x1015c9e8]
mov eax, 0x66666667
mov ecx, dword [0x1015c9e4]
sub esi, ecx
imul esi
mov byte [esp + 0x18], 0
push dword [esp + 0x18]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [0x1015c9e8]
push eax
call fcn.100a2ca0
mov esi, dword [0x1015c9f4]
mov eax, 0x66666667
mov ecx, dword [0x1015c9f0]
sub esi, ecx
imul esi
mov byte [esp + 0x18], 0
push dword [esp + 0x18]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [0x1015c9f4]
push eax
call fcn.100a2ca0
mov esi, dword [0x10156a18]
test esi, esi
je 0x1009ed27
mov edx, dword [esp + 0x20]
push dword [esi + 0x54]
mov ecx, dword [edx + 0xc]
push dword [edx]
xor edx, edx
mov eax, dword [ecx]
push dword [eax + 0x10]
lea eax, [esp + 0x50]
push eax
call fcn.1009e0f0
test eax, eax
jne 0x1009ed1b
mov byte [esi + 0x50], 1
mov esi, dword [esi]
test esi, esi
jne 0x1009ecf6
mov esi, dword [0x10156a18]
mov dword [esp + 0x2c], 0x10156a18
lea eax, [esp + 0x30]
mov dword [esp + 0x30], 0
mov edi, 0x10156a18
mov dword [esp + 0x34], eax
test esi, esi
je 0x1009edc6
nop dword [eax]
mov edx, dword [esp + 0x20]
push dword [esi + 0x54]
mov ecx, dword [edx + 0xc]
push dword [edx]
xor edx, edx
mov eax, dword [ecx]
push dword [eax + 0x10]
lea eax, [esp + 0x50]
push eax
call fcn.1009e0f0
test eax, eax
jne 0x1009edb8
mov eax, dword [esi + 0x60]
mov ecx, dword [esi + 0x5c]
sub eax, ecx
sar eax, 4
cmp eax, 1
jb 0x1009eda0
add eax, eax
movss xmm1, dword [ecx + eax*8 - 0x10]
mov eax, dword [ebp + 0xc]
addss xmm1, dword [0x1014b2ac]
mov eax, dword [eax + 0x1c]
movss xmm0, dword [eax]
comiss xmm0, xmm1
jbe 0x1009edb8
mov ecx, dword [edi]
mov esi, dword [ecx]
mov dword [ecx], 0
mov dword [edi], esi
mov eax, dword [esp + 0x34]
mov dword [eax], ecx
mov dword [esp + 0x34], ecx
jmp 0x1009edbc
mov edi, esi
mov esi, dword [esi]
test esi, esi
jne 0x1009ed50
mov edi, dword [esp + 0x30]
jmp 0x1009edc8
xor edi, edi
test edi, edi
je 0x1009edeb
nop dword [eax]
mov esi, dword [edi]
lea ecx, [edi + 0x5c]
call fcn.100a0d10
push 0x68
push edi
call fcn.100fa9c7
add esp, 8
mov edi, esi
test esi, esi
jne 0x1009edd0
push dword [esp + 0x20]
mov ecx, 0x1015c9c0
call fcn.100a2400
mov ecx, dword [ebp + 0xc]
mov eax, dword [ecx + 0x1c]
movss xmm0, dword [eax]
comiss xmm0, dword [0x10156930]
jb 0x1009ee1c
addss xmm0, dword [0x1014b114]
movss dword [0x10156930], xmm0
push 0x1015c960
call fcn.100fcc27
add esp, 4
pop edi
pop esi
mov esp, ebp
pop ebp
ret 8
push eax
call fcn.100fcce4
nop
xchg esi, eax
jmp 4195024455