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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x477d33
sub esp, 0x70
mov edx, dword [esp + 0x84]
cmp edx, 0x12
jg 0x477d1a
mov ebx, dword [esp + 0x7c]
test ebx, ebx
xchg ebp, ebx
sete bl
xchg ebp, ebx
mov edi, dword [esp + 0x78]
test edi, edi
mov eax, edx
sete dl
and edx, ebp
test dl, dl
je 0x47777d
mov eax, dword [esp + 0x74]
mov dword [eax + 0xc], 0
mov dword [eax + 0x10], 0
add esp, 0x70
ret
cmp ebx, 1
sete dl
xchg ebp, ebx
seta bl
xchg ebp, ebx
and edx, 1
or ebp, edx
xchg ebp, eax
test al, al
xchg ebp, eax
je 0x4777a0
mov ecx, ebx
xor edx, edx
mov ebp, 0x20
jmp 0x4777a8
mov ecx, ebx
mov edx, ecx
mov ebx, edi
xor ebp, ebp
mov dword [esp + 0x24], edx
mov dword [esp + 0x2c], ebp
cmp ebx, 0x10000
mov esi, edi
xchg edi, ebx
setae bl
xchg edi, ebx
test edx, edx
xchg ebp, ebx
sete bl
xchg ebp, ebx
seta dl
and edi, ebp
or edi, edx
xchg edi, eax
test al, al
xchg edi, eax
je 0x4777f1
shr ebx, 0x10
mov edx, dword [esp + 0x24]
mov edi, edx
shl edx, 0x10
or ebx, edx
shr edi, 0x10
mov edx, edi
mov edi, dword [esp + 0x2c]
lea ebp, [edi + 0x10]
jmp 0x4777f9
mov edx, dword [esp + 0x24]
mov ebp, dword [esp + 0x2c]
mov dword [esp + 0x24], edx
mov dword [esp + 0x2c], ebp
cmp ebx, 0x100
xchg edi, ebx
setae bl
xchg edi, ebx
test edx, edx
xchg ebp, ebx
sete bl
xchg ebp, ebx
seta dl
and edi, ebp
or edi, edx
xchg edi, eax
test al, al
xchg edi, eax
je 0x477840
shr ebx, 8
mov edx, dword [esp + 0x24]
mov edi, edx
shl edx, 0x18
or ebx, edx
shr edi, 8
mov edx, edi
mov edi, dword [esp + 0x2c]
lea ebp, [edi + 8]
jmp 0x477848
mov ebp, dword [esp + 0x2c]
mov edx, dword [esp + 0x24]
test edx, edx
jne 0x477d0c
cmp ebx, 0x100
jae 0x477d00
lea edx, [0x55b38c]
movzx edx, byte [edx + ebx]
lea ebx, [edx + ebp]
cmp ebx, 0x37
jge 0x4778d5
mov dword [esp + 0x2c], ebx
lea edx, [edx + ebp - 0x37]
neg edx
cmp edx, 0x20
sbb ebp, ebp
lea edi, [edx - 0x20]
mov dword [esp + 0x6c], edi
cmp edi, 0x20
sbb eax, eax
xchg edi, ebx
neg ebx
xchg edi, ebx
cmp edi, 0x20
sbb ebx, ebx
mov dword [esp + 0x68], ebx
mov ecx, dword [esp + 0x6c]
shl esi, cl
mov ecx, edx
mov ebx, dword [esp + 0x78]
shl ebx, cl
and ebx, ebp
and esi, eax
mov eax, dword [esp + 0x7c]
shl eax, cl
and eax, ebp
mov ecx, edi
mov edx, dword [esp + 0x78]
shr edx, cl
mov ebp, dword [esp + 0x68]
and edx, ebp
or edx, eax
or edx, esi
mov eax, dword [esp + 0x80]
mov ebp, dword [esp + 0x2c]
lea eax, [ebp + eax - 0x37]
jmp 0x4778e0
mov eax, dword [esp + 0x80]
mov edx, ecx
mov ebx, esi
imul ecx, eax, 0x13441
add ecx, 0x4105b6
sar ecx, 0x12
mov ebp, dword [esp + 0x84]
sub ebp, ecx
mov dword [esp + 0x64], ebp
lea ecx, [ebp - 1]
cmp ecx, 0x37
jg 0x47790f
test ecx, ecx
xchg edi, ebx
setge bl
xchg edi, ebx
jmp 0x477911
xor edi, edi
mov dword [esp + 0x28], ecx
xchg edi, eax
mov byte [esp + 0x21], al
xchg edi, eax
mov dword [esp + 0x34], edx
mov dword [esp + 0x30], ebx
mov dword [esp + 4], edx
mov dword [esp], ebx
mov dword [esp + 8], eax
mov dword [esp + 0xc], ecx
call fcn.00479660
mov ecx, dword [esp + 0x18]
movzx eax, byte [esp + 0x1c]
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
test ecx, ecx
jge 0x477ce8
mov dword [esp + 0x48], edx
mov dword [esp + 0x44], ebx
mov ebp, dword [esp + 0x64]
lea esi, [ebp + 0x15]
cmp esi, 0x16
jae 0x47799d
mov esi, dword [esp + 0x30]
test esi, esi
xchg edi, ebx
sete bl
xchg edi, ebx
mov ebp, dword [esp + 0x34]
test ebp, ebp
sete dl
and edx, edi
test dl, dl
jne 0x477be7
mov byte [esp + 0x22], al
mov edi, dword [esp + 0x28]
xchg edi, ebx
neg ebx
xchg edi, ebx
mov dword [esp + 0x38], edi
xor edx, edx
jmp 0x477c1c
movzx esi, byte [esp + 0x21]
xchg esi, eax
mov byte [esp + 0x21], al
xchg esi, eax
mov byte [esp + 0x22], al
neg ecx
mov dword [esp + 0x60], ecx
cmp ecx, 0x20
sbb edi, edi
mov dword [esp + 0x6c], edi
mov ebp, 1
shl ebp, cl
and ebp, edi
mov dword [esp + 0x68], ebp
add ebp, 0xffffffff
mov dword [esp + 0x40], ebp
lea eax, [ecx - 0x20]
mov dword [esp + 0x5c], eax
cmp eax, 0x20
sbb esi, esi
neg eax
cmp eax, 0x20
sbb ebp, ebp
mov ecx, dword [esp + 0x5c]
mov edi, 1
shl edi, cl
mov ecx, eax
mov edx, 1
shr edx, cl
and edx, ebp
and edi, esi
or edi, edx
mov edx, dword [esp + 0x68]
add edx, 0xffffffff
adc edi, 0xffffffff
mov ecx, dword [esp + 0x60]
shr ebx, cl
mov ecx, dword [esp + 0x5c]
mov edx, dword [esp + 0x48]
shr edx, cl
mov ecx, eax
mov eax, dword [esp + 0x48]
shl eax, cl
mov ecx, edi
mov edi, dword [esp + 0x6c]
and ebx, edi
and eax, ebp
or eax, ebx
and edx, esi
or edx, eax
mov dword [esp + 0x6c], edx
mov eax, ecx
mov ecx, dword [esp + 0x60]
mov ebx, dword [esp + 0x48]
mov ebp, ebx
shr ebx, cl
and ebx, edi
mov dword [esp + 0x48], ebx
and eax, ebp
mov ebp, dword [esp + 0x40]
mov esi, dword [esp + 0x44]
and ebp, esi
mov dword [esp + 0x4c], ebp
movzx esi, byte [esp + 0x21]
xchg esi, eax
test al, al
xchg esi, eax
je 0x477b16
lea esi, [ecx - 0x21]
mov edi, esi
xchg esi, ebx
neg ebx
xchg esi, ebx
cmp esi, 0x20
sbb ebx, ebx
cmp edi, 0x20
sbb edx, edx
mov ecx, edi
mov ebp, 1
shl ebp, cl
mov ecx, esi
mov esi, 1
shr esi, cl
and esi, ebx
and ebp, edx
or ebp, esi
cmp ebp, eax
sete dl
setb bl
mov ebp, dword [esp + 0x60]
lea ecx, [ebp - 1]
cmp ecx, 0x20
sbb ebp, ebp
mov esi, 1
shl esi, cl
and esi, ebp
mov ebp, dword [esp + 0x4c]
cmp esi, ebp
xchg edi, ebx
setb bl
xchg edi, ebx
and edi, edx
or edi, ebx
xchg edi, eax
test al, al
xchg edi, eax
je 0x477acd
movzx ecx, byte [esp + 0x22]
jmp 0x477afb
cmp esi, ebp
sete cl
and edx, ecx
test dl, dl
je 0x477b09
movzx ecx, byte [esp + 0x22]
test cl, cl
je 0x477afb
test dl, dl
je 0x477b0e
test cl, cl
je 0x477b0e
mov edx, dword [esp + 0x6c]
test edx, 1
setne bl
jmp 0x477b8e
mov edx, dword [esp + 0x6c]
mov ebx, 1
jmp 0x477b8e
movzx ecx, byte [esp + 0x22]
mov edx, dword [esp + 0x6c]
xor ebx, ebx
jmp 0x477b8e
mov dword [esp + 0x50], eax
lea esi, [ecx - 1]
cmp esi, 0x20
sbb edi, edi
lea edx, [ecx - 0x21]
mov dword [esp + 0x68], edx
mov ecx, edx
neg edx
cmp edx, 0x20
sbb ebp, ebp
mov dword [esp + 0x5c], ebp
cmp ecx, 0x20
sbb ebp, ebp
mov ecx, esi
shr eax, cl
test edi, eax
sete al
mov byte [esp + 0x23], al
mov ecx, edx
mov eax, dword [esp + 0x50]
mov edx, eax
shl eax, cl
mov ecx, esi
mov esi, dword [esp + 0x4c]
shr esi, cl
and esi, edi
mov edi, dword [esp + 0x5c]
and eax, edi
or eax, esi
mov ecx, dword [esp + 0x68]
mov esi, edx
shr edx, cl
and edx, ebp
or edx, eax
cmp edx, 1
sete al
movzx edx, byte [esp + 0x23]
and eax, edx
movzx ecx, byte [esp + 0x22]
mov edx, dword [esp + 0x6c]
mov ebp, dword [esp + 0x4c]
mov ebx, eax
mov eax, esi
test eax, eax
setne al
test ebp, ebp
xchg ebp, ebx
setne bl
xchg ebp, ebx
or eax, ebp
test al, al
je 0x477ba4
xor ecx, ecx
mov eax, dword [esp + 0x74]
mov dword [esp], eax
mov ebp, dword [esp + 0x48]
mov dword [esp + 8], ebp
mov dword [esp + 4], edx
xor ecx, 1
mov byte [esp + 0xc], cl
mov byte [esp + 0xd], bl
mov ecx, dword [esp + 0x84]
mov dword [esp + 0x10], ecx
call fcn.00477d40
mov eax, dword [esp + 0x74]
mov ecx, dword [eax + 0x10]
mov edx, dword [esp + 0x64]
sub ecx, edx
inc ecx
mov dword [eax + 0x10], ecx
add esp, 0x70
ret
mov edx, dword [esp + 0x48]
mov ebp, dword [esp + 0x64]
mov esi, 1
mov eax, 1
jmp 0x4779a2
mov eax, dword [esp + 0x3c]
lea edx, [eax + 1]
mov eax, dword [esp + 0x38]
mov esi, dword [esp + 0x6c]
movzx eax, byte [esp + 0x22]
mov ebx, dword [esp + 0x44]
mov ebp, edi
mov edi, dword [esp + 0x38]
cmp edx, edi
jge 0x477be7
mov dword [esp + 0x3c], edx
mov dword [esp + 0x34], ebp
mov dword [esp + 0x30], esi
mov eax, 0xcccccccd
mul esi
shr edx, 2
mov dword [esp + 0x6c], edx
add edx, 0
mov dword [esp + 0x68], edx
mov eax, 0xcccccccd
mul ebp
shr edx, 2
mov dword [esp + 0x5c], edx
lea ebx, [edx + edx*4]
sub ebp, ebx
mov eax, 0x33333333
mul ebp
mov dword [esp + 0x58], edx
mov ebx, dword [esp + 0x68]
add ebx, eax
mov dword [esp + 0x54], ebx
mov edi, dword [esp + 0x6c]
lea edx, [edi + edi*4]
sub esi, edx
lea edx, [esi + ebp]
mov ebp, eax
mov eax, 0xcccccccd
mul edx
shr edx, 2
mov esi, edx
add edx, ebx
mov dword [esp + 0x6c], edx
mov eax, edx
mov ebx, 5
mul ebx
add edi, 0
mov edi, dword [esp + 0x5c]
adc edi, 0
mov ebx, dword [esp + 0x68]
add ebx, ebp
mov ebx, dword [esp + 0x58]
adc edi, ebx
mov ebx, dword [esp + 0x54]
add esi, ebx
adc edi, 0
mov ebx, dword [esp + 0x30]
cmp eax, ebx
setne bl
lea ebp, [edi + edi*4]
add edx, ebp
mov ebp, dword [esp + 0x34]
cmp ebp, edx
setne dl
or edx, ebx
test dl, dl
je 0x477bfe
movzx eax, byte [esp + 0x22]
mov edx, dword [esp + 0x48]
mov ebx, dword [esp + 0x44]
mov ebp, dword [esp + 0x64]
jmp 0x47799d
lea eax, [0x5315e0]
mov dword [esp], eax
lea eax, [0x586db0]
mov dword [esp + 4], eax
call fcn.00432520
mov eax, ebx
mov ecx, 0x100
call fcn.0045ca10
mov esi, edx
mov eax, ebx
mov ecx, 0x100
call fcn.0045caf0
lea eax, [0x5315e0]
mov dword [esp], eax
lea eax, [0x586da8]
mov dword [esp + 4], eax
call fcn.00432520
nop
call fcn.0045b540
jmp fcn.00477720