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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x4773a3
add esp, 0xffffff80
mov edx, dword [esp + 0x9c]
test edx, edx
sete bl
mov ebp, dword [esp + 0x98]
test ebp, ebp
xchg esi, ebx
sete bl
xchg esi, ebx
and ebx, esi
test bl, bl
je 0x476a8f
xor eax, eax
jmp 0x476a96
mov eax, dword [esp + 0xa0]
mov ebx, dword [esp + 0xa4]
mov ebx, dword [ebx]
lea ecx, [ebx - 0x3c]
neg ecx
cmp ecx, 0x20
sbb ebx, ebx
lea esi, [ecx - 0x20]
mov dword [esp + 0x60], esi
cmp esi, 0x20
sbb edi, edi
xchg esi, ebx
neg ebx
xchg esi, ebx
mov dword [esp + 0x5c], esi
cmp esi, 0x20
sbb esi, esi
shl ebp, cl
shl edx, cl
and ebp, ebx
mov dword [esp + 0x58], ebp
mov ecx, dword [esp + 0x60]
mov ebp, dword [esp + 0x98]
shl ebp, cl
and ebp, edi
mov ecx, dword [esp + 0x5c]
mov edi, dword [esp + 0x98]
shr edi, cl
and edi, esi
and edx, ebx
or edx, edi
or edx, ebp
mov ebx, dword [esp + 0x58]
jmp 0x476b06
shl edx, 1
mov ebp, ebx
shr ebx, 0x1f
or edx, ebx
shl ebp, 1
dec eax
mov ebx, ebp
test edx, edx
xchg ebp, ebx
setne bl
xchg ebp, ebx
test ebx, ebx
xchg esi, ebx
setne bl
xchg esi, ebx
or ebp, esi
xchg ebp, eax
test al, al
xchg ebp, eax
je 0x476b36
test edx, 0x10000000
xchg ebp, ebx
sete bl
xchg ebp, ebx
and ebp, 1
xchg ebp, eax
test al, al
xchg ebp, eax
jne 0x476af8
mov ebp, dword [esp + 0x90]
cmp ebp, 0xf
jae 0x476cbc
mov dword [esp + 0x54], ebx
mov dword [esp + 0x50], edx
shl ebp, 2
cmp ebp, 0x20
sbb edi, edi
mov dword [esp + 0x60], edi
lea ecx, [ebp - 0x20]
mov dword [esp + 0x5c], ecx
neg ecx
cmp ecx, 0x20
sbb esi, esi
mov edi, dword [esp + 0x5c]
cmp edi, 0x20
sbb edi, edi
mov dword [esp + 0x58], edi
lea edi, [ebp - 0x3c]
xchg edi, ebx
neg ebx
xchg edi, ebx
mov dword [esp + 0x4c], edi
cmp edi, 0x20
sbb edx, edx
mov dword [esp + 0x48], edx
lea edx, [edi - 0x20]
mov dword [esp + 0x44], edx
neg edx
mov dword [esp + 0x40], edx
cmp edx, 0x20
sbb edx, edx
mov dword [esp + 0x3c], edx
mov edx, dword [esp + 0x44]
cmp edx, 0x20
sbb edx, edx
mov dword [esp + 0x38], edx
shr ebx, cl
and ebx, esi
mov ecx, ebp
mov esi, dword [esp + 0x50]
shl esi, cl
mov edx, dword [esp + 0x60]
and esi, edx
mov ecx, dword [esp + 0x5c]
mov edi, dword [esp + 0x54]
shl edi, cl
mov ecx, edx
mov edx, dword [esp + 0x58]
and edx, edi
or esi, ebx
or esi, edx
and esi, 0xfffffff
cmp esi, 0x8000000
sete dl
mov byte [esp + 0x23], dl
mov ebx, ecx
mov ecx, ebp
mov edi, dword [esp + 0x54]
mov ebp, edi
shl edi, cl
and edi, ebx
mov ecx, dword [esp + 0x4c]
shr ebp, cl
mov ebx, dword [esp + 0x48]
and ebp, ebx
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x50]
shl edx, cl
mov ebx, dword [esp + 0x3c]
and edx, ebx
or edx, ebp
mov ecx, dword [esp + 0x44]
mov ebx, dword [esp + 0x50]
shr ebx, cl
mov ebp, dword [esp + 0x38]
and ebx, ebp
or edx, ebx
mov ebx, edx
and edx, 1
or edx, edi
test edx, edx
seta dl
cmp esi, 0x8000000
xchg esi, ebx
seta bl
xchg esi, ebx
mov ecx, dword [esp + 0x4c]
mov ebp, dword [esp + 0x50]
shr ebp, cl
mov edi, dword [esp + 0x48]
and ebp, edi
movzx edi, byte [esp + 0x23]
and edi, edx
or edi, esi
xchg edi, eax
test al, al
xchg edi, eax
je 0x476c65
add ebx, 1
adc ebp, 0
mov edx, ecx
mov ecx, dword [esp + 0x44]
mov esi, ebx
shl ebx, cl
mov edi, dword [esp + 0x38]
and ebx, edi
mov ecx, dword [esp + 0x40]
mov edi, esi
shr esi, cl
mov ecx, edi
mov edi, dword [esp + 0x3c]
and esi, edi
mov edi, ecx
mov ecx, edx
shl ebp, cl
mov edx, dword [esp + 0x48]
and ebp, edx
or esi, ebp
or esi, ebx
shl edi, cl
and edi, edx
test esi, 0x20000000
je 0x476caf
shr edi, 1
mov ecx, esi
shl esi, 0x1f
or edi, esi
shr ecx, 1
inc eax
jmp 0x476cb1
mov ecx, esi
mov ebp, dword [esp + 0x90]
mov ebx, edi
mov edx, ecx
movzx ecx, byte [esp + 0x94]
cmp cl, 0x58
jne 0x476cd1
lea esi, [0x550cc8]
jmp 0x476cd7
lea esi, [0x550cd8]
mov dword [esp + 0x74], esi
mov dword [esp + 0x34], eax
mov dword [esp + 0x60], ebx
mov dword [esp + 0x5c], edx
movzx edi, byte [esp + 0x95]
xchg edi, eax
test al, al
xchg edi, eax
je 0x476d82
mov edi, dword [esp + 0x88]
lea esi, [edi + 1]
mov ebp, dword [esp + 0x8c]
cmp ebp, esi
jb 0x476d23
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x6c]
jmp 0x476d78
lea eax, [0x5317a0]
mov dword [esp], eax
mov ecx, dword [esp + 0x84]
mov dword [esp + 4], ecx
mov dword [esp + 8], edi
mov dword [esp + 0xc], ebp
mov dword [esp + 0x10], esi
call fcn.004464a0
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
lea esi, [ecx + 1]
movzx ecx, byte [esp + 0x94]
mov ebx, dword [esp + 0x60]
mov edi, dword [esp + 0x88]
mov dword [esp + 0x7c], eax
mov ebp, edx
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x5c]
mov ebx, dword [esp + 0x7c]
mov byte [ebx + edi], 0x2d
jmp 0x476d97
mov esi, dword [esp + 0x88]
mov ebp, dword [esp + 0x8c]
mov ebx, dword [esp + 0x84]
lea edi, [esi + 3]
cmp ebp, edi
jae 0x476de3
mov dword [esp + 0x30], esi
lea eax, [0x5317a0]
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], esi
mov dword [esp + 0xc], ebp
mov dword [esp + 0x10], edi
call fcn.004464a0
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
lea edi, [eax + 3]
mov eax, dword [esp + 0x34]
movzx ecx, byte [esp + 0x94]
mov edx, dword [esp + 0x5c]
mov esi, dword [esp + 0x30]
mov dword [esp + 0x30], edi
mov byte [ebx + esi], 0x30
mov byte [ebx + esi + 1], cl
shr edx, 0x1c
and edx, 1
add edx, 0x30
mov byte [ebx + esi + 2], dl
mov edx, dword [esp + 0x5c]
shl edx, 4
mov esi, dword [esp + 0x60]
shr esi, 0x1c
or esi, edx
mov dword [esp + 0x5c], esi
mov edx, dword [esp + 0x60]
shl edx, 4
mov dword [esp + 0x60], edx
mov ecx, dword [esp + 0x90]
test ecx, ecx
jge 0x476e95
test esi, esi
xchg esi, ebx
setne bl
xchg esi, ebx
test edx, edx
setne dl
or edx, esi
test dl, dl
je 0x476e8b
lea ecx, [edi + 1]
cmp ebp, ecx
jae 0x476e76
lea eax, [0x5317a0]
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], ebp
mov dword [esp + 0x10], ecx
call fcn.004464a0
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
lea ecx, [eax + 1]
mov eax, dword [esp + 0x34]
mov edi, dword [esp + 0x30]
mov byte [ebx + edi], 0x2e
mov edi, dword [esp + 0x74]
mov esi, dword [esp + 0x5c]
mov edx, dword [esp + 0x60]
jmp 0x477310
test ecx, ecx
mov edx, dword [esp + 0x60]
mov esi, dword [esp + 0x5c]
jle 0x476ef9
lea ecx, [edi + 1]
cmp ebp, ecx
jae 0x476edb
lea eax, [0x5317a0]
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], ebp
mov dword [esp + 0x10], ecx
call fcn.004464a0
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
lea ecx, [eax + 1]
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x60]
mov esi, dword [esp + 0x5c]
mov edi, dword [esp + 0x30]
mov byte [ebx + edi], 0x2e
mov edi, dword [esp + 0x90]
mov dword [esp + 0x64], eax
xor eax, eax
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x64]
jmp 0x477269
movzx ecx, byte [esp + 0x94]
mov edx, ecx
or ecx, 0x20
cmp dl, cl
jne 0x476f11
mov ecx, 0x70
jmp 0x476f16
mov ecx, 0x50
lea edx, [edi + 1]
cmp ebp, edx
jae 0x476f5f
mov dword [esp + 0x30], edi
mov byte [esp + 0x20], cl
lea eax, [0x5317a0]
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
mov dword [esp + 0xc], ebp
mov dword [esp + 0x10], edx
call fcn.004464a0
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
lea edx, [eax + 1]
mov eax, dword [esp + 0x34]
movzx ecx, byte [esp + 0x20]
mov edi, dword [esp + 0x30]
mov byte [ebx + edi], cl
test eax, eax
jge 0x476f6f
neg eax
mov ecx, 0x2d
jmp 0x476f74
mov ecx, 0x2b
mov dword [esp + 0x34], eax
lea esi, [edx + 1]
cmp ebp, esi
jae 0x476fc1
mov dword [esp + 0x30], edx
mov byte [esp + 0x20], cl
lea eax, [0x5317a0]
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], edx
mov dword [esp + 0xc], ebp
mov dword [esp + 0x10], esi
call fcn.004464a0
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
lea esi, [eax + 1]
mov eax, dword [esp + 0x34]
movzx ecx, byte [esp + 0x20]
mov edx, dword [esp + 0x30]
mov dword [esp + 0x30], esi
mov byte [ebx + edx], cl
cmp eax, 0x64
jge 0x477045
lea ecx, [esi + 2]
mov edx, eax
mov eax, 0xcccccccd
mov edi, edx
imul edx
add edx, edi
sar edx, 3
mov eax, edi
sar edi, 0x1f
sub edx, edi
lea edi, [edx + edx*4]
shl edi, 1
sub eax, edi
cmp ebp, ecx
jae 0x477033
mov dword [esp + 0x34], edx
mov dword [esp + 0x2c], eax
lea eax, [0x5317a0]
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], esi
mov dword [esp + 0xc], ebp
mov dword [esp + 0x10], ecx
call fcn.004464a0
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
lea ecx, [eax + 2]
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x34]
mov esi, dword [esp + 0x30]
add edx, 0x30
mov byte [ebx + esi], dl
add eax, 0x30
mov byte [ebx + esi + 1], al
jmp 0x47721c
mov dword [esp + 0x78], ebx
cmp eax, 0x3e8
jge 0x477124
lea ecx, [esi + 3]
mov edx, eax
mov eax, 0xcccccccd
mov edi, edx
imul edx
add edx, edi
mov dword [esp + 0x2c], edx
sar edx, 3
mov dword [esp + 0x28], edx
mov eax, 0xcccccccd
imul edx
mov eax, esi
mov esi, dword [esp + 0x2c]
sar esi, 0x1f
mov ebx, dword [esp + 0x28]
add edx, ebx
sar edx, 3
sub edx, esi
lea edx, [edx + edx*4]
shl edx, 1
mov esi, ebx
sub ebx, edx
lea edx, [esi + esi*4]
shl edx, 1
mov esi, edi
sub edi, edx
cmp ebp, ecx
jb 0x4770a6
mov edx, dword [esp + 0x78]
jmp 0x4770f1
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x28], edi
lea edx, [0x5317a0]
mov dword [esp], edx
mov edx, dword [esp + 0x78]
mov dword [esp + 4], edx
mov dword [esp + 8], eax
mov dword [esp + 0xc], ebp
mov dword [esp + 0x10], ecx
call fcn.004464a0
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
lea ecx, [eax + 3]
mov eax, dword [esp + 0x30]
mov esi, dword [esp + 0x34]
mov edi, dword [esp + 0x28]
mov edx, ebx
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x7c], edx
mov eax, 0x51eb851f
imul esi
sar edx, 5
add edx, 0x30
mov esi, dword [esp + 0x30]
mov eax, edi
mov edi, dword [esp + 0x7c]
mov byte [edi + esi], dl
lea edx, [ebx + 0x30]
mov byte [edi + esi + 1], dl
lea edx, [eax + 0x30]
mov byte [edi + esi + 2], dl
mov ebx, edi
jmp 0x47721c
lea ecx, [esi + 4]
mov edx, eax
mov eax, 0x51eb851f
mov edi, edx
imul edx
sar edx, 5
mov eax, esi
movzx esi, dl
imul esi, esi, 0x19a
shr esi, 0xc
lea esi, [esi + esi*4]
shl esi, 1
sub edx, esi
mov byte [esp + 0x22], dl
mov esi, eax
mov eax, 0xcccccccd
imul edi
add edx, edi
mov dword [esp + 0x2c], edx
sar edx, 3
mov dword [esp + 0x28], edx
mov eax, 0xcccccccd
imul edx
mov eax, esi
mov esi, dword [esp + 0x28]
add edx, esi
sar edx, 3
mov ebx, dword [esp + 0x2c]
sar ebx, 0x1f
sub edx, ebx
lea edx, [edx + edx*4]
shl edx, 1
mov ebx, esi
sub esi, edx
lea edx, [ebx + ebx*4]
shl edx, 1
mov ebx, edi
sub edi, edx
mov dword [esp + 0x2c], edi
cmp ebp, ecx
jb 0x47719f
mov edx, dword [esp + 0x78]
jmp 0x4771e6
mov dword [esp + 0x28], esi
lea edx, [0x5317a0]
mov dword [esp], edx
mov edx, dword [esp + 0x78]
mov dword [esp + 4], edx
mov dword [esp + 8], eax
mov dword [esp + 0xc], ebp
mov dword [esp + 0x10], ecx
call fcn.004464a0
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
lea ecx, [eax + 4]
mov eax, dword [esp + 0x30]
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x2c]
mov edx, ebx
mov ebx, dword [esp + 0x34]
mov eax, ebx
mov edi, 0x4189374c
mov ebx, edx
imul edi
sar edx, 8
add edx, 0x30
mov edi, dword [esp + 0x30]
mov byte [ebx + edi], dl
movzx edx, byte [esp + 0x22]
add edx, 0x30
mov byte [ebx + edi + 1], dl
lea edx, [esi + 0x30]
mov byte [ebx + edi + 2], dl
mov edx, dword [esp + 0x2c]
add edx, 0x30
mov byte [ebx + edi + 3], dl
mov dword [esp + 0xa8], ebx
mov dword [esp + 0xac], ecx
mov dword [esp + 0xb0], ebp
sub esp, 0xffffff80
ret
xchg esi, eax
mov byte [ebx + ecx], al
xchg esi, eax
mov ecx, dword [esp + 0x24]
inc ecx
mov esi, dword [esp + 0x5c]
shl esi, 4
mov eax, dword [esp + 0x60]
shr eax, 0x1c
or esi, eax
mov eax, dword [esp + 0x60]
shl eax, 4
mov dword [esp + 0x24], ecx
mov edx, eax
mov ecx, edi
mov eax, dword [esp + 0x34]
mov edi, dword [esp + 0x90]
mov dword [esp + 0x60], edx
mov edx, dword [esp + 0x24]
cmp edi, edx
jle 0x4772db
mov dword [esp + 0x5c], esi
lea edi, [ecx + 1]
shr esi, 0x1c
and esi, 0xf
mov edx, dword [esp + 0x74]
movzx esi, byte [edx + esi]
cmp ebp, edi
jae 0x477235
xchg esi, eax
mov byte [esp + 0x21], al
xchg esi, eax
mov dword [esp + 0x2c], ecx
lea eax, [0x5317a0]
mov dword [esp], eax
mov dword [esp + 4], ebx
mov dword [esp + 8], ecx
mov dword [esp + 0xc], ebp
mov dword [esp + 0x10], edi
call fcn.004464a0
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
lea edi, [eax + 1]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x74]
movzx esi, byte [esp + 0x21]
jmp 0x477235
mov edi, ecx
jmp 0x476ef9
mov eax, dword [esp + 0x7c]
xchg esi, ebx
mov byte [eax + ecx], bl
xchg esi, ebx
shl ebx, 4
mov esi, dword [esp + 0x60]
mov ecx, esi
shr esi, 0x1c
or esi, ebx
shl ecx, 4
mov eax, dword [esp + 0x34]
mov ebx, dword [esp + 0x7c]
mov ebx, edx
mov edx, ecx
mov ecx, ebx
mov ebx, dword [esp + 0x7c]
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x60], edx
test esi, esi
setne bl
test edx, edx
setne dl
or ebx, edx
test bl, bl
je 0x477398
lea edx, [ecx + 1]
mov ebx, esi
shr esi, 0x1c
and esi, 0xf
movzx esi, byte [edi + esi]
cmp ebp, edx
jae 0x4772e2
xchg esi, eax
mov byte [esp + 0x21], al
xchg esi, eax
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x2c], ecx
lea eax, [0x5317a0]
mov dword [esp], eax
mov ebx, dword [esp + 0x7c]
mov dword [esp + 4], ebx
mov dword [esp + 8], ecx
mov dword [esp + 0xc], ebp
mov dword [esp + 0x10], edx
call fcn.004464a0
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
lea edx, [eax + 1]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x2c]
movzx esi, byte [esp + 0x21]
mov edi, dword [esp + 0x74]
mov dword [esp + 0x7c], ebx
mov ebx, dword [esp + 0x5c]
jmp 0x4772e2
mov edi, ecx
mov ebx, dword [esp + 0x7c]
jmp 0x476ef9
call fcn.0045b540
jmp fcn.00476a50