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

Disassembly:
mov eax, dword [esp + 0x14]
sub esp, 0xd4
push ebx
mov ebx, dword [esp + 0xe4]
push ebp
push esi
push edi
xor edi, edi
dec eax
cmp eax, 4
mov edx, 1
jl 0x470bd1
mov eax, 4
sub eax, ebx
mov dword [esp + 0x18], eax
mov eax, 0xc
sub eax, ebx
mov dword [esp + 0x1c], eax
mov ebp, 0xfffffffc
mov eax, 0xfffffff4
xor esi, esi
sub ebp, ebx
sub eax, ebx
lea ecx, [ebx + 0x14]
mov dword [esp + 0x50], eax
fld dword [ecx - 8]
fcomp dword [esi + ebx + 4]
fnstsw ax
test ah, 5
jp 0x470b7a
mov eax, dword [esp + 0x50]
mov edi, edx
lea esi, [eax + ecx]
fld dword [ecx]
fcomp dword [esi + ebx + 4]
fnstsw ax
test ah, 5
jp 0x470b8d
lea edi, [edx + 1]
lea esi, [ecx + ebp]
fld dword [ecx + 8]
fcomp dword [esi + ebx + 4]
fnstsw ax
test ah, 5
jp 0x470ba5
mov eax, dword [esp + 0x18]
lea edi, [edx + 2]
lea esi, [eax + ecx]
fld dword [ecx + 0x10]
fcomp dword [esi + ebx + 4]
fnstsw ax
test ah, 5
jp 0x470bbd
mov eax, dword [esp + 0x1c]
lea edi, [edx + 3]
lea esi, [eax + ecx]
mov eax, dword [esp + 0xf8]
add edx, 4
add eax, 0xfffffffd
add ecx, 0x20
cmp edx, eax
jl 0x470b63
mov eax, dword [esp + 0xf8]
cmp edx, eax
jge 0x470c0e
lea esi, [edi*8]
lea ecx, [ebx + edx*8 + 4]
mov ebp, eax
lea esp, [esp]
fld dword [ecx]
fcomp dword [esi + ebx + 4]
fnstsw ax
test ah, 5
jp 0x470c06
mov edi, edx
lea esi, [edx*8]
inc edx
add ecx, 8
cmp edx, ebp
jl 0x470bf0
mov ecx, dword [esp + 0xf8]
lea eax, [edi - 1]
test eax, eax
jge 0x470c20
add eax, ecx
jmp 0x470c26
cmp eax, ecx
jl 0x470c26
sub eax, ecx
mov edx, eax
fld dword [ebx + edx*8]
mov dword [esp + 0x10], eax
call fcn.0045dbd0
fld dword [ebx + edi*8]
mov esi, eax
call fcn.0045dbd0
mov ecx, dword [esp + 0x10]
fld dword [ebx + ecx*8 + 4]
mov ebp, eax
fsub dword [ebx + edi*8 + 4]
lea eax, [ebx + edi*8 + 4]
mov dword [esp + 0x18], eax
call fcn.0045dbd0
cmp ebp, esi
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], ebp
jle 0x470c7b
mov ecx, ebp
sub ecx, esi
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x68], 0xffffffff
jmp 0x470c89
sub esi, ebp
mov dword [esp + 0x5c], esi
mov dword [esp + 0x68], 1
mov edx, dword [esp + 0xf4]
mov ecx, dword [esp + 0x10]
mov ebx, dword [edx + edi*8]
mov ecx, dword [edx + ecx*8]
cmp ebx, ecx
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x84], 0
mov dword [esp + 0x88], ebx
jle 0x470cd0
mov esi, ebx
sub esi, ecx
mov dword [esp + 0x8c], esi
mov dword [esp + 0x98], 0xffffffff
jmp 0x470ce4
sub ecx, ebx
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x98], 1
mov ecx, dword [esp + 0x10]
mov esi, dword [edx + edi*8 + 4]
mov ecx, dword [edx + ecx*8 + 4]
cmp esi, ecx
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x6c], 0
mov dword [esp + 0x70], esi
jle 0x470d23
mov edx, esi
sub edx, ecx
mov dword [esp + 0x74], edx
mov dword [esp + 0x80], 0xffffffff
jmp 0x470d34
sub ecx, esi
mov dword [esp + 0x74], ecx
mov dword [esp + 0x80], 1
inc edi
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], eax
jns 0x470d4a
mov edx, dword [esp + 0xf8]
add edi, edx
jmp 0x470d57
mov eax, dword [esp + 0xf8]
cmp edi, eax
jl 0x470d57
sub edi, eax
mov eax, dword [esp + 0xf0]
mov ecx, edi
fld dword [eax + ecx*8]
mov dword [esp + 0x14], edi
call fcn.0045dbd0
mov edx, dword [esp + 0xf0]
mov ecx, dword [esp + 0x18]
mov edi, eax
mov eax, dword [esp + 0x14]
fld dword [edx + eax*8 + 4]
fsub dword [ecx]
call fcn.0045dbd0
cmp ebp, edi
mov dword [esp + 0x20], 0
mov dword [esp + 0x24], ebp
jle 0x470da8
sub ebp, edi
mov dword [esp + 0x28], ebp
mov dword [esp + 0x34], 0xffffffff
jmp 0x470db6
sub edi, ebp
mov dword [esp + 0x28], edi
mov dword [esp + 0x34], 1
mov edx, dword [esp + 0xf4]
mov edi, dword [esp + 0x14]
mov ecx, dword [edx + edi*8]
xor ebp, ebp
cmp ebx, ecx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x38], ebp
mov dword [esp + 0x3c], ebx
jle 0x470dea
sub ebx, ecx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x4c], 0xffffffff
jmp 0x470df8
sub ecx, ebx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x4c], 1
mov ecx, dword [edx + edi*8 + 4]
cmp esi, ecx
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x9c], ebp
mov dword [esp + 0xa0], esi
jle 0x470e2c
sub esi, ecx
mov dword [esp + 0xa4], esi
mov dword [esp + 0xb0], 0xffffffff
jmp 0x470e40
sub ecx, esi
mov dword [esp + 0xa4], ecx
mov dword [esp + 0xb0], 1
mov edx, dword [esp + 0x18]
fld dword [edx]
mov dword [esp + 0xa8], eax
mov dword [esp + 0xac], eax
call fcn.0045dbd0
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x60]
cmp ecx, eax
jl 0x470f96
mov ebx, dword [esp + 0x10]
mov ecx, dword [esp + 0xf8]
lea eax, [ebx - 1]
test eax, eax
jge 0x470e83
add eax, ecx
jmp 0x470e89
cmp eax, ecx
jl 0x470e89
sub eax, ecx
mov ebp, dword [esp + 0xf0]
mov edx, eax
fld dword [ebp + edx*8]
mov dword [esp + 0x10], eax
call fcn.0045dbd0
fld dword [ebp + ebx*8]
mov edi, eax
call fcn.0045dbd0
mov esi, eax
mov eax, dword [esp + 0x10]
fld dword [ebp + eax*8 + 4]
fsub dword [ebp + ebx*8 + 4]
call fcn.0045dbd0
xor ebp, ebp
cmp esi, edi
mov dword [esp + 0x54], ebp
mov dword [esp + 0x58], esi
jle 0x470edb
sub esi, edi
mov dword [esp + 0x5c], esi
mov dword [esp + 0x68], 0xffffffff
jmp 0x470ee9
sub edi, esi
mov dword [esp + 0x5c], edi
mov dword [esp + 0x68], 1
mov esi, dword [esp + 0xf4]
mov edi, dword [esp + 0x10]
mov ecx, dword [esi + ebx*8]
mov edx, dword [esi + edi*8]
cmp ecx, edx
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x84], ebp
mov dword [esp + 0x88], ecx
jle 0x470f2a
sub ecx, edx
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x98], 0xffffffff
jmp 0x470f3e
sub edx, ecx
mov dword [esp + 0x8c], edx
mov dword [esp + 0x98], 1
mov ecx, dword [esi + ebx*8 + 4]
mov edx, dword [esi + edi*8 + 4]
cmp ecx, edx
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x70], ecx
jle 0x470f73
sub ecx, edx
mov dword [esp + 0x74], ecx
mov dword [esp + 0x80], 0xffffffff
jmp 0x470f84
sub edx, ecx
mov dword [esp + 0x74], edx
mov dword [esp + 0x80], 1
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], eax
cmp ebx, dword [esp + 0x14]
je 0x4710d2
mov ecx, dword [esp + 0x20]
cmp ecx, dword [esp + 0x2c]
jl 0x4710dd
mov eax, dword [esp + 0x14]
mov ebx, eax
inc eax
jns 0x470fb8
mov edx, dword [esp + 0xf8]
add eax, edx
jmp 0x470fc5
mov ecx, dword [esp + 0xf8]
cmp eax, ecx
jl 0x470fc5
sub eax, ecx
mov ebp, dword [esp + 0xf0]
fld dword [ebp + eax*8]
mov dword [esp + 0x14], eax
call fcn.0045dbd0
fld dword [ebp + ebx*8]
mov edi, eax
call fcn.0045dbd0
mov ecx, dword [esp + 0x14]
fld dword [ebp + ecx*8 + 4]
mov esi, eax
fsub dword [ebp + ebx*8 + 4]
call fcn.0045dbd0
cmp esi, edi
mov dword [esp + 0x20], 0
mov dword [esp + 0x24], esi
jle 0x471017
sub esi, edi
mov dword [esp + 0x28], esi
mov dword [esp + 0x34], 0xffffffff
jmp 0x471025
sub edi, esi
mov dword [esp + 0x28], edi
mov dword [esp + 0x34], 1
mov esi, dword [esp + 0xf4]
mov edi, dword [esp + 0x14]
mov ecx, dword [esi + ebx*8]
mov edx, dword [esi + edi*8]
cmp ecx, edx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], ecx
jle 0x47105e
sub ecx, edx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x4c], 0xffffffff
jmp 0x47106c
sub edx, ecx
mov dword [esp + 0x40], edx
mov dword [esp + 0x4c], 1
mov ecx, dword [esi + ebx*8 + 4]
mov edx, dword [esi + edi*8 + 4]
cmp ecx, edx
mov ebp, eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], ebp
mov dword [esp + 0x9c], 0
mov dword [esp + 0xa0], ecx
jle 0x4710aa
sub ecx, edx
mov dword [esp + 0xa4], ecx
mov dword [esp + 0xb0], 0xffffffff
jmp 0x4710be
sub edx, ecx
mov dword [esp + 0xa4], edx
mov dword [esp + 0xb0], 1
mov dword [esp + 0xa8], eax
mov dword [esp + 0xac], eax
cmp ebx, dword [esp + 0x10]
jne 0x4710e1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xd4
ret
mov ebp, dword [esp + 0x48]
mov eax, dword [esp + 0x18]
test eax, eax
mov esi, dword [esp + 0x44]
mov edx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x30]
jl 0x4713a4
mov edi, dword [esp + 0xe8]
cmp eax, dword [edi + 4]
jge 0x4713a4
mov edi, dword [esp + 0x24]
mov ebp, dword [esp + 0x58]
mov edx, dword [esp + 0x88]
mov eax, edi
sub eax, ebp
cmp edx, ebx
mov dword [esp + 0x50], eax
mov dword [esp + 0xd0], edx
jle 0x471140
mov ecx, edx
sub ecx, ebx
mov dword [esp + 0xe0], 0xffffffff
jmp 0x47114f
mov ecx, ebx
sub ecx, edx
mov dword [esp + 0xe0], 1
mov edx, dword [esp + 0x70]
mov esi, dword [esp + 0xa0]
cmp edx, esi
mov dword [esp + 0xd4], ecx
mov dword [esp + 0xdc], eax
mov dword [esp + 0xb8], edx
jle 0x471184
mov ecx, edx
sub ecx, esi
mov dword [esp + 0xc8], 0xffffffff
jmp 0x471193
mov ecx, esi
sub ecx, edx
mov dword [esp + 0xc8], 1
cmp ebp, edi
mov dword [esp + 0xbc], ecx
mov dword [esp + 0xc4], eax
mov dword [esp + 0x1c], ebp
jge 0x47138e
mov ebp, dword [esp + 0xfc]
mov edi, dword [esp + 0x1c]
mov esi, dword [esp + 0xb8]
mov edx, dword [esp + 0xdc]
mov ecx, eax
mov eax, dword [esp + 0x50]
lea esp, [esp]
test edi, edi
jl 0x47130a
mov ebx, dword [esp + 0xe8]
cmp edi, dword [ebx]
jge 0x47130a
mov esi, dword [esp + 0x1c]
mov eax, ebx
mov edx, dword [eax + 8]
imul edx, dword [esp + 0x18]
mov eax, dword [eax + 0xc]
add edx, esi
lea esi, [eax + edx*4]
mov eax, dword [esp + 0xec]
mov ecx, dword [eax + 8]
imul ecx, dword [esp + 0xb8]
add ecx, dword [esp + 0xd0]
mov edx, dword [eax + 0xc]
movzx eax, byte [edx + ecx*4 + 3]
lea edi, [edx + ecx*4]
movzx ecx, byte [ebp + 0xc]
movzx ebx, byte [esi]
imul eax, ecx
mov ecx, dword [ebp]
add eax, 0x80
mov edx, eax
sar edx, 8
add edx, eax
movzx eax, byte [edi]
sub eax, ebx
add eax, ecx
sar edx, 8
imul eax, edx
add eax, 0x80
mov ecx, eax
sar ecx, 8
add ecx, eax
sar ecx, 8
add ecx, ebx
cmp ecx, 0xff
jle 0x471269
mov ecx, 0xff
mov eax, ecx
jmp 0x471273
test ecx, ecx
jle 0x471271
mov eax, ecx
jmp 0x471273
xor eax, eax
movzx ebx, byte [esi + 1]
mov byte [esi], al
movzx eax, byte [edi + 1]
add eax, dword [ebp + 4]
sub eax, ebx
imul eax, edx
add eax, 0x80
mov ecx, eax
sar ecx, 8
add ecx, eax
sar ecx, 8
add ecx, ebx
cmp ecx, 0xff
jle 0x4712a7
mov ecx, 0xff
mov eax, ecx
jmp 0x4712b1
test ecx, ecx
jle 0x4712af
mov eax, ecx
jmp 0x4712b1
xor eax, eax
movzx ebx, byte [esi + 2]
mov byte [esi + 1], al
movzx eax, byte [edi + 2]
add eax, dword [ebp + 8]
sub eax, ebx
imul eax, edx
add eax, 0x80
mov ecx, eax
sar ecx, 8
add ecx, eax
sar ecx, 8
add ecx, ebx
cmp ecx, 0xff
jle 0x4712e4
mov ecx, 0xff
jmp 0x4712ea
test ecx, ecx
jg 0x4712ea
xor ecx, ecx
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0xdc]
mov byte [esi + 2], cl
mov ecx, dword [esp + 0xc4]
mov esi, dword [esp + 0xb8]
add edx, dword [esp + 0xd4]
cmp edx, eax
mov dword [esp + 0xdc], edx
jle 0x471344
mov edi, dword [esp + 0xd0]
mov ebx, dword [esp + 0xe0]
sub edx, eax
add edi, ebx
cmp edx, eax
jg 0x471323
mov dword [esp + 0xd0], edi
mov edi, dword [esp + 0x1c]
mov dword [esp + 0xdc], edx
add ecx, dword [esp + 0xbc]
cmp ecx, eax
mov dword [esp + 0xc4], ecx
jle 0x47137d
jmp 0x471360
mov ebx, dword [esp + 0xc8]
sub ecx, eax
add esi, ebx
cmp ecx, eax
jg 0x471360
mov dword [esp + 0xc4], ecx
mov dword [esp + 0xb8], esi
mov ebx, dword [esp + 0x24]
inc edi
cmp edi, ebx
mov dword [esp + 0x1c], edi
jl 0x4711d0
emms
mov edx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x48]
mov ecx, dword [esp + 0x30]
mov ebx, dword [esp + 0x3c]
mov esi, dword [esp + 0x44]
mov eax, dword [esp + 0x64]
add eax, dword [esp + 0x5c]
cmp eax, dword [esp + 0x60]
mov dword [esp + 0x64], eax
jle 0x4713d6
jmp 0x4713c0
mov edi, dword [esp + 0x68]
add dword [esp + 0x58], edi
mov edi, dword [esp + 0x60]
sub eax, edi
cmp eax, edi
jg 0x4713c0
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x54]
mov edi, dword [esp + 0x8c]
inc eax
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x94]
add eax, edi
cmp eax, dword [esp + 0x90]
mov dword [esp + 0x94], eax
jle 0x471422
nop
mov edi, dword [esp + 0x98]
add dword [esp + 0x88], edi
mov edi, dword [esp + 0x90]
sub eax, edi
cmp eax, edi
jg 0x471400
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x84]
mov edi, dword [esp + 0x74]
inc eax
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x7c]
add eax, edi
cmp eax, dword [esp + 0x78]
mov dword [esp + 0x7c], eax
jle 0x471469
jmp 0x471450
mov edi, dword [esp + 0x80]
add dword [esp + 0x70], edi
mov edi, dword [esp + 0x78]
sub eax, edi
cmp eax, edi
jg 0x471450
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x6c]
add ecx, dword [esp + 0x28]
inc eax
cmp ecx, edx
mov dword [esp + 0x6c], eax
mov dword [esp + 0x30], ecx
jle 0x471496
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x34]
sub ecx, edx
add eax, edi
cmp ecx, edx
jg 0x471482
mov dword [esp + 0x30], ecx
mov dword [esp + 0x24], eax
mov edx, dword [esp + 0x20]
add ebp, dword [esp + 0x40]
inc edx
cmp ebp, esi
mov dword [esp + 0x20], edx
mov dword [esp + 0x48], ebp
jle 0x4714c4
jmp 0x4714b0
mov edx, dword [esp + 0x4c]
sub ebp, esi
add ebx, edx
cmp ebp, esi
jg 0x4714b0
mov dword [esp + 0x48], ebp
mov dword [esp + 0x3c], ebx
mov eax, dword [esp + 0xac]
mov edi, dword [esp + 0x38]
mov esi, dword [esp + 0xa4]
mov ecx, dword [esp + 0xa8]
add eax, esi
inc edi
cmp eax, ecx
mov dword [esp + 0x38], edi
mov dword [esp + 0xac], eax
jle 0x471516
mov edx, dword [esp + 0xa0]
mov esi, dword [esp + 0xb0]
lea ecx, [ecx]
sub eax, ecx
add edx, esi
cmp eax, ecx
jg 0x471500
mov dword [esp + 0xac], eax
mov dword [esp + 0xa0], edx
mov ecx, dword [esp + 0x9c]
mov eax, dword [esp + 0x18]
inc ecx
mov dword [esp + 0x9c], ecx
inc eax
jmp 0x470e59