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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xd4
mov eax, dword [0x52e028]
xor eax, esp
mov dword [esp + 0xd0], eax
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 0x10]
push ebx
push esi
xor esi, esi
test byte [ecx + 0x15], 2
push edi
mov dword [esp + 0x30], ecx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x28], eax
mov dword [esp + 0x44], esi
mov dword [esp + 0x50], esi
mov dword [esp + 0x14], esi
je 0x4759db
add eax, 4
mov dword [esp + 0x28], eax
mov eax, dword [eax - 4]
mov dword [esp + 0x50], eax
mov byte [esp + 0x13], 1
jmp 0x4759e0
mov byte [esp + 0x13], 0
movsx eax, byte [edx]
cmp eax, esi
je case.default.0x475cd2
mov edi, dword [esp + 0x2c]
cmp eax, 0x25
je 0x475a4b
mov esi, edi
mov dword [esp + 0x14], esi
lea ebx, [ebx]
mov al, byte [edi + 1]
inc edi
test al, al
je 0x475a0c
cmp al, 0x25
jne 0x475a00
mov ecx, dword [esp + 0x30]
mov edx, dword [ecx + 0x10]
mov eax, edi
sub eax, esi
add edx, eax
cmp edx, dword [ecx + 8]
jb 0x475a29
push esi
call fcn.00476f00
add esp, 4
jmp 0x475a42
test eax, eax
je 0x475a42
mov dword [ecx + 0x10], edx
mov ecx, dword [ecx + 4]
push eax
sub ecx, eax
add ecx, edx
push esi
push ecx
call fcn.004f0800
add esp, 0xc
cmp byte [edi], 0
je case.default.0x475cd2
movsx eax, byte [edi + 1]
mov ecx, dword [esp + 0x30]
inc edi
test eax, eax
je 0x476c96
mov byte [esp + 0x37], 0
mov byte [esp + 0x1d], 0
mov byte [esp + 0x27], 0
mov byte [esp + 0x1f], 0
mov byte [esp + 0x12], 0
mov byte [esp + 0x1e], 0
lea ebx, [ebx]
lea ecx, [eax - 0x20]
cmp ecx, 0x10
ja case.0x475a8f.34
movzx edx, byte [ecx + 0x476d34]
jmp dword [edx*4 + 0x476d14]
mov byte [esp + 0x1e], 1
jmp 0x475ac5
mov byte [esp + 0x12], 0x2b
jmp 0x475ac5
mov byte [esp + 0x12], 0x20
jmp 0x475ac5
mov byte [esp + 0x27], 1
jmp 0x475ac5
mov byte [esp + 0x1d], 1
jmp 0x475ac5
mov byte [esp + 0x37], 1
jmp 0x475ac5
mov byte [esp + 0x1f], 0x2c
movsx eax, byte [edi + 1]
inc edi
test eax, eax
jne 0x475a80
mov dword [esp + 0x2c], edi
cmp eax, 0x2a
jne 0x475b64
cmp byte [esp + 0x13], 0
mov ebx, dword [esp + 0x50]
je 0x475b1e
mov eax, dword [ebx + 4]
cmp dword [ebx], eax
jg 0x475afd
mov esi, dword [esp + 0x28]
xor eax, eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x20], eax
jmp 0x475b31
mov ecx, dword [ebx + 8]
mov ecx, dword [ecx + eax*4]
inc eax
push ecx
mov dword [ebx + 4], eax
call fcn.00498c90
mov esi, dword [esp + 0x2c]
add esp, 4
mov dword [esp + 0x3c], edx
mov dword [esp + 0x20], eax
jmp 0x475b31
mov esi, dword [esp + 0x28]
mov edx, dword [esi]
add esi, 4
mov dword [esp + 0x28], esi
mov dword [esp + 0x20], edx
mov eax, edx
test eax, eax
jge 0x475b59
cmp eax, 0x80000001
mov byte [esp + 0x1e], 1
jl 0x475b51
neg eax
inc edi
mov dword [esp + 0x20], eax
movsx eax, byte [edi]
mov dword [esp + 0x2c], edi
jmp 0x475b9b
mov dword [esp + 0x20], 0
movsx eax, byte [edi + 1]
inc edi
mov dword [esp + 0x2c], edi
jmp 0x475b9b
xor ecx, ecx
cmp eax, 0x30
jl 0x475b89
jmp 0x475b70
cmp eax, 0x39
jg 0x475b85
lea ecx, [ecx + ecx*4]
inc edi
lea ecx, [eax + ecx*2 - 0x30]
movsx eax, byte [edi]
cmp eax, 0x30
jge 0x475b70
mov dword [esp + 0x2c], edi
mov ebx, dword [esp + 0x50]
mov esi, dword [esp + 0x28]
and ecx, 0x7fffffff
mov dword [esp + 0x20], ecx
cmp eax, 0x2e
jne 0x475c45
movsx eax, byte [edi + 1]
inc edi
mov dword [esp + 0x2c], edi
cmp eax, 0x2a
jne 0x475c12
cmp byte [esp + 0x13], 0
je 0x475be1
mov eax, dword [ebx + 4]
cmp dword [ebx], eax
jg 0x475bc8
xor eax, eax
mov dword [esp + 0x3c], eax
jmp 0x475bea
mov edx, dword [ebx + 8]
mov ecx, dword [edx + eax*4]
inc eax
push ecx
mov dword [ebx + 4], eax
call fcn.00498c90
add esp, 4
mov dword [esp + 0x3c], edx
jmp 0x475bea
mov eax, dword [esi]
add esi, 4
mov dword [esp + 0x28], esi
mov dword [esp + 0x18], eax
movsx eax, byte [edi + 1]
inc edi
cmp dword [esp + 0x18], 0
mov dword [esp + 0x2c], edi
jge 0x475c4d
mov ecx, dword [esp + 0x18]
cmp ecx, 0x80000001
jl 0x475c45
neg ecx
mov dword [esp + 0x18], ecx
jmp 0x475c4d
xor ecx, ecx
cmp eax, 0x30
jl 0x475c39
lea esp, [esp]
cmp eax, 0x39
jg 0x475c35
lea ecx, [ecx + ecx*4]
inc edi
lea ecx, [eax + ecx*2 - 0x30]
movsx eax, byte [edi]
cmp eax, 0x30
jge 0x475c20
mov dword [esp + 0x2c], edi
and ecx, 0x7fffffff
mov dword [esp + 0x18], ecx
jmp 0x475c4d
mov dword [esp + 0x18], 0xffffffff
cmp eax, 0x6c
jne 0x475c75
movsx eax, byte [edi + 1]
inc edi
mov byte [esp + 0x10], 1
mov dword [esp + 0x2c], edi
cmp eax, 0x6c
jne 0x475c7a
movsx eax, byte [edi + 1]
inc edi
mov byte [esp + 0x10], 2
mov dword [esp + 0x2c], edi
jmp 0x475c7a
mov byte [esp + 0x10], 0
mov ecx, 0x50a9f0
mov dword [esp + 0x54], ecx
mov byte [esp + 0x11], 0x11
xor edx, edx
lea ebx, [ebx]
movsx edi, byte [ecx]
cmp eax, edi
je 0x475ca9
add ecx, 6
inc edx
cmp ecx, 0x50aa7a
jl 0x475c90
mov ecx, dword [esp + 0x54]
jmp 0x475cc2
lea ecx, [edx + edx*2]
mov dl, byte [ecx*2 + 0x50a9f3]
lea ecx, [ecx*2 + 0x50a9f0]
mov dword [esp + 0x54], ecx
mov byte [esp + 0x11], dl
mov dl, byte [esp + 0x11]
movzx eax, dl
cmp eax, 0x10
ja case.default.0x475cd2
jmp dword [eax*4 + 0x476d48]
mov al, 1
mov byte [esp + 0x1f], 0
jmp 0x475cf1
mov al, byte [esp + 0x10]
mov byte [esp + 0x1f], 0
jmp 0x475cf1
mov al, byte [esp + 0x10]
test byte [ecx + 2], 1
je 0x475d82
cmp byte [esp + 0x13], 0
je 0x475d33
mov eax, dword [ebx + 4]
cmp dword [ebx], eax
jg 0x475d1e
xor eax, eax
xor edx, edx
mov esi, edx
mov dl, byte [esp + 0x12]
mov edi, eax
mov byte [esp + 0x10], dl
jmp 0x475dd9
mov ecx, dword [ebx + 8]
mov ecx, dword [ecx + eax*4]
inc eax
push ecx
mov dword [ebx + 4], eax
call fcn.00498c90
add esp, 4
jmp 0x475d4f
test al, al
je 0x475d45
cmp al, 2
jne 0x475d45
mov eax, dword [esi]
mov edx, dword [esi + 4]
add esi, 8
jmp 0x475d4b
mov eax, dword [esi]
add esi, 4
cdq
mov dword [esp + 0x28], esi
test edx, edx
jg 0x475d0d
jl 0x475d59
test eax, eax
jae 0x475d0d
test eax, eax
jne 0x475d70
cmp edx, 0x80000000
jne 0x475d70
xor edi, edi
mov esi, edx
mov byte [esp + 0x10], 0x2d
jmp 0x475dd9
neg eax
adc edx, 0
neg edx
mov edi, eax
mov esi, edx
mov byte [esp + 0x10], 0x2d
jmp 0x475dd9
cmp byte [esp + 0x13], 0
je 0x475db3
mov eax, dword [ebx + 4]
cmp dword [ebx], eax
jg 0x475d9a
xor eax, eax
xor edx, edx
mov edi, eax
mov esi, edx
jmp 0x475dd4
mov ecx, dword [ebx + 8]
mov ecx, dword [ecx + eax*4]
inc eax
push ecx
mov dword [ebx + 4], eax
call fcn.00498c90
add esp, 4
mov edi, eax
mov esi, edx
jmp 0x475dd4
test al, al
je 0x475dc9
cmp al, 2
jne 0x475dc9
mov edi, dword [esi]
add esi, 8
mov dword [esp + 0x28], esi
mov esi, dword [esi - 4]
jmp 0x475dd4
mov edi, dword [esi]
add esi, 4
mov dword [esp + 0x28], esi
xor esi, esi
mov byte [esp + 0x10], 0
mov edx, edi
or edx, esi
jne 0x475de3
mov byte [esp + 0x27], dl
cmp byte [esp + 0x37], 0
je 0x475e03
mov eax, dword [esp + 0x20]
xor ecx, ecx
cmp byte [esp + 0x10], cl
setne cl
sub eax, ecx
cmp dword [esp + 0x18], eax
jge 0x475e03
mov dword [esp + 0x18], eax
cmp dword [esp + 0x18], 0x25
jge 0x475e1c
lea eax, [esp + 0x90]
mov ebx, 0x46
mov dword [esp + 0x58], eax
jmp 0x475e64
mov eax, 0x55555556
imul dword [esp + 0x18]
mov eax, edx
shr eax, 0x1f
add eax, edx
cdq
mov ebx, eax
mov eax, dword [esp + 0x18]
mov ecx, edx
cdq
add ebx, eax
adc ecx, edx
add ebx, 0xa
adc ecx, 0
mov edx, ebx
or edx, ecx
je 0x475e52
push ecx
push ebx
call fcn.00474f70
add esp, 8
jmp 0x475e54
xor eax, eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x58], eax
test eax, eax
je 0x476ced
cmp byte [esp + 0x11], 0xf
lea eax, [eax + ebx - 1]
mov dword [esp + 0x48], ebx
mov dword [esp + 0x14], eax
jne 0x475ebf
push 0
push 0xa
push esi
push edi
call fcn.004f0d00
mov dword [esp + 0x3c], ebx
mov ebx, ecx
cmp ebx, 4
jge 0x475ea1
push 0
push 0xa
push edx
push eax
call fcn.004f0c80
cmp eax, 1
jne 0x475ea3
test edx, edx
jne 0x475ea3
xor ebx, ebx
mov eax, dword [esp + 0x14]
mov cl, byte [ebx*2 + 0x50aa7d]
dec eax
mov byte [eax], cl
mov dl, byte [ebx*2 + str.thstndrd]
dec eax
mov dword [esp + 0x14], eax
mov byte [eax], dl
mov ecx, dword [esp + 0x54]
movzx eax, byte [ecx + 4]
add eax, str.0123456789ABCDEF0123456789abcdef
mov dword [esp + 0x38], eax
movzx eax, byte [ecx + 1]
cdq
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], edx
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x60]
dec dword [esp + 0x14]
push eax
push ecx
push esi
push edi
call fcn.004f0d00
mov esi, dword [esp + 0x38]
mov cl, byte [ecx + esi]
mov esi, dword [esp + 0x14]
mov byte [esi], cl
mov esi, edx
mov dword [esp + 0x8c], ebx
mov edi, eax
test esi, esi
ja 0x475edd
jb 0x475f14
test edi, edi
ja 0x475edd
mov edx, dword [esp + 0x58]
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x18]
sub edx, esi
lea eax, [edx + eax - 1]
cmp ecx, eax
jle 0x475f3f
sub ecx, eax
add eax, ecx
dec esi
sub ecx, 1
mov byte [esi], 0x30
jne 0x475f32
mov dword [esp + 0x14], esi
mov bl, byte [esp + 0x1f]
test bl, bl
je 0x475f7d
dec eax
cdq
mov ecx, 3
idiv ecx
xor ecx, ecx
sub esi, eax
lea edi, [edx + 1]
mov dword [esp + 0x14], esi
test eax, eax
jle 0x475f7d
nop
sub edi, 1
lea edx, [eax + ecx]
mov dl, byte [edx + esi]
mov byte [ecx + esi], dl
jne 0x475f78
inc ecx
mov byte [ecx + esi], bl
dec eax
mov edi, 3
inc ecx
test eax, eax
jg 0x475f60
mov al, byte [esp + 0x10]
test al, al
je 0x475f8c
dec esi
mov dword [esp + 0x14], esi
mov byte [esi], al
cmp byte [esp + 0x27], 0
je 0x475fbe
mov eax, dword [esp + 0x54]
mov al, byte [eax + 5]
test al, al
je 0x475fbe
movzx eax, al
add eax, 0x50a9e4
mov cl, byte [eax]
test cl, cl
je 0x475fbe
lea esp, [esp]
dec esi
inc eax
mov byte [esi], cl
mov cl, byte [eax]
test cl, cl
jne 0x475fb0
mov dword [esp + 0x14], esi
mov ebx, dword [esp + 0x58]
sub ebx, dword [esp + 0x14]
mov ecx, dword [esp + 0x48]
lea ebx, [ebx + ecx - 1]
jmp 0x476a6d
cmp byte [esp + 0x13], 0
je 0x475fe3
mov eax, ebx
call fcn.004758f0
jmp 0x475fec
fld qword [esi]
add esi, 8
mov dword [esp + 0x28], esi
mov ecx, dword [esp + 0x18]
fst qword [esp + 0x38]
test ecx, ecx
jge 0x476001
mov ecx, 6
mov dword [esp + 0x18], ecx
fldz
fcom st(1)
fnstsw ax
fxch st(1)
test ah, 0x41
jne 0x47601b
fchs
mov byte [esp + 0x10], 0x2d
fst qword [esp + 0x38]
jmp 0x476023
mov dl, byte [esp + 0x12]
mov byte [esp + 0x10], dl
cmp byte [esp + 0x11], 3
jne 0x476033
test ecx, ecx
jle 0x476033
dec ecx
mov dword [esp + 0x18], ecx
fld qword [0x519310]
mov eax, ecx
fld qword [0x519410]
and eax, 0xfff
cmp eax, 8
jl 0x47606e
lea ecx, [eax - 8]
shr ecx, 3
inc ecx
mov edx, ecx
neg edx
lea eax, [eax + edx*8]
sub ecx, 1
fmul st(1), st(0)
fmul st(1), st(0)
fmul st(1), st(0)
fmul st(1), st(0)
fmul st(1), st(0)
fmul st(1), st(0)
fmul st(1), st(0)
fmul st(1), st(0)
jne 0x476059
test eax, eax
jle 0x476079
dec eax
fmul st(1), st(0)
test eax, eax
jg 0x476072
cmp byte [esp + 0x11], 1
jne 0x47608c
fld st(1)
faddp st(3)
fxch st(2)
fst qword [esp + 0x38]
fxch st(2)
fxch st(2)
xor ebx, ebx
fst qword [esp + 0x48]
fld qword [esp + 0x48]
fstp qword [esp + 0x58]
fld qword [esp + 0x48]
fld qword [esp + 0x58]
fucompp
fnstsw ax
test ah, 0x44
jnp 0x4760c7
fstp st(3)
mov dword [esp + 0x14], 0x515600
fstp st(2)
mov ebx, 3
fstp st(1)
fstp st(0)
jmp 0x476a6d
fcom st(3)
fnstsw ax
fstp st(3)
test ah, 0x41
jne 0x476211
fld1
fld st(0)
fld qword [0x519408]
fcom st(5)
fnstsw ax
test ah, 0x41
jp 0x476103
cmp ebx, 0x15e
jg 0x476103
fmul st(1), st(0)
add ebx, 0x64
fld st(1)
fmul st(1)
fcomp st(6)
fnstsw ax
test ah, 0x41
jnp 0x4760e9
fstp st(0)
fld st(0)
fld qword [0x519400]
fmul st(1), st(0)
fxch st(6)
fcom st(1)
fnstsw ax
test ah, 1
je 0x476124
fstp st(1)
fstp st(5)
jmp 0x476144
fxch st(1)
fxch st(2)
cmp ebx, 0x15e
jg 0x47611a
fstp st(2)
add ebx, 0xa
fld st(0)
fmul st(6)
fcom st(2)
fnstsw ax
test ah, 0x41
jnp 0x476120
fstp st(0)
fstp st(5)
fxch st(4)
fld st(0)
fld qword [0x519300]
fmul st(1), st(0)
fxch st(6)
fcom st(1)
fnstsw ax
test ah, 1
je 0x476161
fstp st(1)
jmp 0x47617d
fxch st(1)
fxch st(2)
cmp ebx, 0x15e
jg 0x476159
fstp st(2)
inc ebx
fld st(0)
fmul st(6)
fcom st(2)
fnstsw ax
test ah, 0x41
jnp 0x47615d
fstp st(0)
fxch st(1)
fdivrp st(1)
fst qword [esp + 0x38]
fld qword [0x5193f8]
fcom st(1)
fnstsw ax
test ah, 0x41
je 0x4761b3
fstp st(0)
fcom st(1)
fnstsw ax
test ah, 5
jp 0x4761cf
fmul st(4)
dec ebx
fcom st(1)
fnstsw ax
test ah, 5
jnp 0x47619d
fstp st(1)
fst qword [esp + 0x38]
jmp 0x4761d1
fxch st(1)
fxch st(1)
sub ebx, 8
fmul qword [0x5193f0]
fcom st(1)
fnstsw ax
test ah, 5
jnp 0x4761b1
fstp st(1)
fst qword [esp + 0x38]
jmp 0x476194
fstp st(1)
cmp ebx, 0x15e
jle 0x476219
lea eax, [esp + 0x90]
fstp st(0)
xor ebx, ebx
fstp st(0)
mov dword [esp + 0x14], eax
fstp st(1)
mov al, byte [esp + 0x10]
fstp st(0)
test al, al
setne bl
mov byte [esp + 0x90], al
mov dword [esp + ebx + 0x90], 0x666e49
add ebx, 3
jmp 0x476a6d
fld qword [0x519300]
fxch st(3)
mov cl, byte [esp + 0x11]
lea esi, [esp + 0x90]
cmp cl, 1
je 0x476241
faddp st(1)
fst qword [esp + 0x38]
fcom st(2)
fnstsw ax
test ah, 1
jne 0x476243
fmulp st(1)
inc ebx
fst qword [esp + 0x38]
jmp 0x476245
fstp st(1)
fstp st(1)
cmp cl, 3
jne 0x4762cb
cmp byte [esp + 0x27], 0
sete byte [esp + 0x1f]
cmp ebx, 0xfffffffc
jl 0x4762be
cmp ebx, dword [esp + 0x18]
jg 0x4762be
sub dword [esp + 0x18], ebx
mov byte [esp + 0x11], 1
mov eax, ebx
mov dword [esp + 0x14], ebx
xor ecx, ecx
test eax, eax
setle cl
dec ecx
and eax, ecx
cdq
mov ecx, eax
mov eax, dword [esp + 0x18]
mov edi, edx
cdq
add ecx, eax
mov eax, dword [esp + 0x20]
adc edi, edx
cdq
add ecx, eax
mov eax, edi
adc eax, edx
js 0x4762f8
jg 0x47629e
cmp ecx, 0x37
jbe 0x4762f8
add ecx, 0xf
fstp st(1)
adc eax, 0
mov edx, ecx
or edx, eax
je 0x4762e0
push eax
fstp st(0)
push ecx
call fcn.00474f70
fld qword [esp + 0x40]
add esp, 8
jmp 0x4762e2
xor eax, eax
mov byte [esp + 0x11], 2
mov dword [esp + 0x14], eax
jmp 0x476272
mov dl, byte [esp + 0x1d]
mov byte [esp + 0x1f], dl
cmp cl, 2
jne 0x47626c
xor eax, eax
mov dword [esp + 0x14], eax
jmp 0x476272
xor eax, eax
mov dword [esp + 0x44], eax
mov esi, eax
test eax, eax
je 0x476ceb
fld qword [0x519300]
jmp 0x4762fa
fxch st(1)
mov dl, byte [esp + 0x1d]
cmp dword [esp + 0x18], 0
movzx eax, dl
setg cl
or cl, dl
or cl, byte [esp + 0x27]
lea edi, [eax + eax*4]
mov al, byte [esp + 0x10]
lea edi, [edi + edi + 0x10]
mov dword [esp + 0x58], esi
mov dword [esp + 0x48], edi
mov byte [esp + 0x12], cl
test al, al
je 0x47632d
mov byte [esi], al
inc esi
cmp dword [esp + 0x14], 0
jge 0x47633c
mov byte [esi], 0x30
fstp st(0)
inc esi
jmp 0x476372
test edi, edi
jg 0x476344
mov al, 0x30
jmp 0x47635a
fld st(1)
dec edi
call fcn.004f0910
mov dword [esp + 0x38], eax
fild dword [esp + 0x38]
add al, 0x30
fsubp st(2)
fmul st(1), st(0)
mov byte [esi], al
inc esi
sub dword [esp + 0x14], 1
jns 0x47633c
mov cl, byte [esp + 0x12]
fstp st(0)
fst qword [esp + 0x38]
mov dword [esp + 0x48], edi
test cl, cl
je 0x47637a
mov byte [esi], 0x2e
inc esi
add dword [esp + 0x14], 1
jns 0x4763a3
mov edi, dword [esp + 0x14]
fstp st(0)
neg edi
push edi
push 0x30
push esi
call fcn.004f0a6a
fld qword [esp + 0x44]
add esi, edi
add esp, 0xc
sub dword [esp + 0x18], edi
mov edi, dword [esp + 0x48]
cmp dword [esp + 0x18], 0
jle 0x4763de
fld qword [0x519300]
dec dword [esp + 0x18]
test edi, edi
jg 0x4763bc
mov al, 0x30
jmp 0x4763d2
fld st(1)
dec edi
call fcn.004f0910
mov dword [esp + 0x38], eax
fild dword [esp + 0x38]
add al, 0x30
fsubp st(2)
fmul st(1), st(0)
mov byte [esi], al
inc esi
cmp dword [esp + 0x18], 0
jg 0x4763b0
fstp st(1)
cmp byte [esp + 0x1f], 0
fstp st(0)
je 0x476415
cmp byte [esp + 0x12], 0
je 0x476415
cmp byte [esi - 1], 0x30
jne 0x4763fe
dec esi
mov byte [esi], 0
cmp byte [esi - 1], 0x30
je 0x4763f4
cmp byte [esi - 1], 0x2e
jne 0x476415
cmp byte [esp + 0x1d], 0
je 0x476411
mov byte [esi], 0x30
inc esi
jmp 0x476415
dec esi
mov byte [esi], 0
cmp byte [esp + 0x11], 2
jne 0x476485
mov eax, dword [esp + 0x54]
movzx ecx, byte [eax + 4]
mov dl, byte [ecx + str.0123456789ABCDEF0123456789abcdef]
mov byte [esi], dl
inc esi
test ebx, ebx
jge 0x476439
mov byte [esi], 0x2d
inc esi
neg ebx
jmp 0x47643d
mov byte [esi], 0x2b
inc esi
cmp ebx, 0x64
jl 0x476460
mov eax, 0x51eb851f
imul ebx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov cl, al
imul eax, eax, 0xffffff9c
add cl, 0x30
mov byte [esi], cl
inc esi
add ebx, eax
mov eax, 0x66666667
imul ebx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dl, al
mov cl, 0xa
imul cl
add dl, 0x30
mov byte [esi], dl
sub bl, al
inc esi
add bl, 0x30
mov byte [esi], bl
inc esi
mov eax, dword [esp + 0x58]
mov byte [esi], 0
sub esi, eax
cmp byte [esp + 0x37], 0
mov ebx, esi
mov dword [esp + 0x14], eax
je 0x476a6d
cmp byte [esp + 0x1e], 0
jne 0x476a6d
mov edx, dword [esp + 0x20]
cmp ebx, edx
jge 0x476a6d
mov edi, dword [esp + 0x58]
mov ecx, edx
sub ecx, ebx
cmp edx, ecx
mov eax, edx
jl 0x4764d3
mov esi, edi
sub esi, ecx
mov bl, byte [esi + eax]
mov byte [eax + edi], bl
dec eax
cmp eax, ecx
jge 0x4764c8
xor eax, eax
cmp byte [esp + 0x10], al
setne al
test ecx, ecx
je 0x4764f2
push ecx
add edi, eax
push 0x30
push edi
call fcn.004f0a6a
mov edx, dword [esp + 0x2c]
add esp, 0xc
mov ebx, edx
jmp 0x476a6d
cmp byte [esp + 0x13], 0
jne 0x476a67
mov eax, dword [esp + 0x30]
mov edx, dword [esi]
mov ecx, dword [eax + 0x10]
add esi, 4
mov dword [esp + 0x28], esi
mov dword [edx], ecx
jmp 0x476a67
lea edx, [esp + 0x90]
mov byte [esp + 0x90], 0x25
mov dword [esp + 0x14], edx
mov ebx, 1
jmp 0x476a6d
cmp byte [esp + 0x13], 0
je 0x4765a0
mov ecx, dword [esp + 0x50]
call fcn.00475930
mov ebx, 1
test eax, eax
je 0x476593
movsx ecx, byte [eax]
mov byte [esp + 0x90], cl
and ecx, 0xc0
inc eax
cmp cl, 0xc0
jne 0x476662
jmp 0x476570
mov cl, byte [eax]
mov dl, cl
and dl, 0xc0
cmp dl, 0x80
jne 0x476662
mov byte [esp + ebx + 0x90], cl
inc ebx
inc eax
cmp ebx, 4
jl 0x476570
jmp 0x476662
mov byte [esp + 0x90], 0
jmp 0x476662
mov eax, dword [esi]
add esi, 4
mov dword [esp + 0x28], esi
cmp eax, 0x80
jae 0x4765c1
mov byte [esp + 0x90], al
mov ebx, 1
jmp 0x476662
mov ecx, eax
cmp eax, 0x800
jae 0x4765ec
shr ecx, 6
and cl, 0x1f
sub cl, 0x40
and al, 0x3f
add al, 0x80
mov byte [esp + 0x90], cl
mov byte [esp + 0x91], al
mov ebx, 2
jmp 0x476662
mov edx, eax
cmp eax, 0x10000
jae 0x476620
shr edx, 0xc
shr ecx, 6
and dl, 0xf
and cl, 0x3f
sub dl, 0x20
and al, 0x3f
add cl, 0x80
add al, 0x80
mov byte [esp + 0x90], dl
mov byte [esp + 0x92], al
mov ebx, 3
jmp 0x47665b
shr edx, 0x12
and dl, 7
sub dl, 0x10
mov byte [esp + 0x90], dl
mov edx, eax
shr ecx, 0xc
shr edx, 6
and cl, 0x3f
and dl, 0x3f
add dl, 0x80
and al, 0x3f
add cl, 0x80
add al, 0x80
mov byte [esp + 0x92], dl
mov byte [esp + 0x93], al
mov ebx, 4
mov byte [esp + 0x91], cl
mov edi, dword [esp + 0x18]
cmp edi, 1
jle 0x4766f6
mov eax, dword [esp + 0x20]
mov ecx, 1
sub ecx, edi
add eax, ecx
cmp eax, 1
mov dword [esp + 0x20], eax
jle 0x4766a7
cmp byte [esp + 0x1e], 0
jne 0x4766a7
mov esi, dword [esp + 0x30]
push 0x20
dec eax
push eax
push esi
call fcn.00476ea0
add esp, 0xc
mov dword [esp + 0x20], 0
jmp 0x4766ab
mov esi, dword [esp + 0x30]
dec edi
lea esp, [esp]
mov edx, dword [esi + 0x10]
lea eax, [edx + ebx]
cmp eax, dword [esi + 8]
jb 0x4766d1
lea eax, [esp + 0x90]
push eax
mov eax, ebx
mov ecx, esi
call fcn.00476f00
add esp, 4
jmp 0x4766f1
test ebx, ebx
je 0x4766f1
mov edx, dword [esi + 4]
push ebx
lea ecx, [esp + 0x94]
sub edx, ebx
push ecx
add edx, eax
push edx
mov dword [esi + 0x10], eax
call fcn.004f0800
add esp, 0xc
sub edi, 1
jne 0x4766b0
lea eax, [esp + 0x90]
mov dword [esp + 0x14], eax
jmp 0x47697c
cmp byte [esp + 0x13], 0
je 0x476721
mov ecx, ebx
call fcn.00475930
mov esi, eax
mov dword [esp + 0x14], eax
mov byte [esp + 0x11], 5
jmp 0x47672f
add esi, 4
mov dword [esp + 0x28], esi
mov esi, dword [esi - 4]
mov dword [esp + 0x14], esi
test esi, esi
jne 0x47673e
mov esi, 0x511b20
mov dword [esp + 0x14], esi
jmp 0x4767a2
cmp byte [esp + 0x11], 6
jne 0x4767a2
mov edi, dword [esp + 0x30]
cmp dword [edi + 0x10], 0
jne 0x47679e
cmp dword [edi + 0xc], 0
je 0x47679e
cmp dword [esp + 0x20], 0
jne 0x47679e
cmp dword [esp + 0x18], 0
jge 0x47679e
cmp byte [edi + 0x14], 0
jne 0x47679e
mov eax, dword [edi]
mov ecx, esi
mov dword [edi + 4], esi
call fcn.00475060
mov dword [edi + 8], eax
mov eax, esi
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x476780
sub eax, edx
mov ecx, edi
or byte [ecx + 0x15], 4
and eax, 0x7fffffff
mov dword [ecx + 0x10], eax
xor ebx, ebx
jmp 0x476a6d
mov dword [esp + 0x44], esi
cmp dword [esp + 0x18], 0
jl 0x476814
cmp byte [esp + 0x1d], 0
je 0x4767eb
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
mov ebx, esi
test ecx, ecx
jle 0x4767e4
mov edi, edi
mov al, byte [ebx]
dec ecx
test al, al
je 0x4767e4
inc ebx
cmp al, 0xc0
jb 0x4767e0
mov dl, byte [ebx]
and dl, 0xc0
cmp dl, 0x80
jne 0x4767e0
mov al, byte [ebx + 1]
inc ebx
and al, 0xc0
cmp al, 0x80
je 0x4767d6
test ecx, ecx
jg 0x4767c0
sub ebx, esi
jmp 0x476971
mov eax, dword [esp + 0x18]
xor ebx, ebx
test eax, eax
jle 0x476a6d
mov ecx, dword [esp + 0x14]
lea ecx, [ecx]
cmp byte [ebx + ecx], 0
je 0x476a6d
inc ebx
cmp ebx, eax
jl 0x476800
jmp 0x476a6d
mov eax, esi
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x476820
sub eax, edx
and eax, 0x7fffffff
jmp 0x47696f
cmp dl, 0xe
setne al
dec al
and al, 0xfb
add al, 0x27
cmp byte [esp + 0x13], 0
mov byte [esp + 0x12], al
je 0x476855
mov ecx, ebx
call fcn.00475930
mov ebx, eax
jmp 0x47685e
mov ebx, dword [esi]
add esi, 4
mov dword [esp + 0x28], esi
xor eax, eax
test ebx, ebx
sete al
mov dword [esp + 0x38], eax
test eax, eax
je 0x47687e
cmp byte [esp + 0x11], 0xa
mov ebx, str.NULL
je 0x47687e
mov ebx, str._NULL_
mov eax, dword [esp + 0x18]
xor ecx, ecx
xor edi, edi
mov esi, eax
test eax, eax
je 0x4768c3
mov al, byte [edi + ebx]
test al, al
je 0x4768c3
cmp al, byte [esp + 0x12]
jne 0x47689a
inc ecx
cmp byte [esp + 0x1d], 0
je 0x4768bd
and al, 0xc0
cmp al, 0xc0
jne 0x4768bd
mov dl, byte [ebx + edi + 1]
and dl, al
cmp dl, 0x80
jne 0x4768bd
mov al, byte [ebx + edi + 2]
inc edi
and al, 0xc0
cmp al, 0x80
je 0x4768b2
inc edi
sub esi, 1
jne 0x47688c
cmp dword [esp + 0x38], 0
jne 0x4768d9
cmp byte [esp + 0x11], 0xa
mov dword [esp + 0x48], 1
je 0x4768e1
mov dword [esp + 0x48], 0
lea eax, [ecx + edi + 3]
cmp eax, 0x46
jle 0x476913
cdq
mov ecx, eax
or ecx, edx
je 0x4768fd
push edx
push eax
call fcn.00474f70
add esp, 8
jmp 0x4768ff
xor eax, eax
mov dword [esp + 0x44], eax
mov esi, eax
mov dword [esp + 0x14], eax
test eax, eax
je 0x476ced
jmp 0x47691e
lea esi, [esp + 0x90]
mov dword [esp + 0x14], esi
xor eax, eax
cmp dword [esp + 0x48], eax
je 0x476931
mov dl, byte [esp + 0x12]
mov byte [esi], dl
mov eax, 1
mov ecx, edi
xor edi, edi
mov dword [esp + 0x38], ecx
test ecx, ecx
jle 0x476958
lea ecx, [ecx]
mov cl, byte [edi + ebx]
mov byte [eax + esi], cl
inc eax
cmp cl, byte [esp + 0x12]
jne 0x476951
mov byte [eax + esi], cl
inc eax
inc edi
cmp edi, dword [esp + 0x38]
jl 0x476940
cmp dword [esp + 0x48], 0
je 0x476967
mov cl, byte [esp + 0x12]
mov byte [eax + esi], cl
inc eax
mov edx, dword [esp + 0x14]
mov byte [eax + edx], 0
mov ebx, eax
cmp byte [esp + 0x1d], 0
je 0x476a6d
cmp dword [esp + 0x20], 0
jle 0x476a6d
lea eax, [ebx - 1]
test eax, eax
jl 0x476a6d
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 0x14]
lea ebx, [ebx]
mov cl, byte [eax + esi]
and cl, 0xc0
dec eax
cmp cl, 0x80
jne 0x4769ad
inc edi
test eax, eax
jge 0x4769a0
mov dword [esp + 0x20], edi
jmp 0x476a6d
mov ecx, dword [esp + 0x30]
test byte [ecx + 0x15], 1
je case.default.0x475cd2
add esi, 4
mov dword [esp + 0x28], esi
mov esi, dword [esi - 4]
test esi, esi
je 0x476a67
mov eax, dword [esi + 4]
test eax, eax
je 0x476a67
mov edx, dword [esi]
push eax
push edx
push ecx
call fcn.00476f30
add esp, 0xc
jmp 0x476a67
mov edi, dword [esp + 0x30]
test byte [edi + 0x15], 1
je case.default.0x475cd2
mov eax, dword [esi]
add esi, 4
add esi, 4
mov dword [esp + 0x28], esi
mov esi, dword [esi - 4]
lea ecx, [esi + esi*8]
lea esi, [eax + ecx*8 + 8]
mov eax, dword [esi + 4]
test eax, eax
je 0x476a58
push eax
push edi
call fcn.00476f80
mov eax, dword [edi + 0x10]
inc eax
add esp, 8
cmp eax, dword [edi + 8]
jb 0x476a48
push 0x513904
mov eax, 1
mov ecx, edi
call fcn.00476f00
add esp, 4
jmp 0x476a58
mov edx, dword [edi + 4]
mov dword [edi + 0x10], eax
mov cl, byte [0x513904]
mov byte [edx + eax - 1], cl
mov edx, dword [esi + 8]
push edx
mov eax, edi
push eax
call fcn.00476f80
add esp, 8
xor ebx, ebx
mov dword [esp + 0x20], ebx
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 0x30]
sub edi, ebx
mov dword [esp + 0x20], edi
test edi, edi
jle 0x476b8d
cmp byte [esp + 0x1e], 0
jne 0x476af2
mov edx, dword [esi + 0x10]
mov eax, edi
mov dword [esp + 0x68], edx
cdq
mov ecx, edi
mov edi, dword [esp + 0x68]
add edi, eax
mov dword [esp + 0x6c], 0
mov eax, dword [esp + 0x6c]
adc eax, edx
xor edx, edx
cmp eax, edx
mov dword [esp + 0x80], edi
mov edi, dword [esi + 8]
jl 0x476ada
jg 0x476ac5
cmp dword [esp + 0x80], edi
jb 0x476ada
mov edi, dword [esp + 0x20]
push edi
call fcn.00476d90
mov ecx, eax
add esp, 4
test ecx, ecx
jle 0x476af2
jmp 0x476ae0
mov edi, dword [esp + 0x20]
mov edi, edi
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 4]
dec ecx
mov byte [eax + edx], 0x20
inc dword [esi + 0x10]
test ecx, ecx
jg 0x476ae0
mov eax, dword [esi + 0x10]
add eax, ebx
cmp eax, dword [esi + 8]
jb 0x476b0f
mov ecx, dword [esp + 0x14]
push ecx
mov eax, ebx
mov ecx, esi
call fcn.00476f00
add esp, 4
jmp 0x476b2c
test ebx, ebx
je 0x476b2c
mov ecx, dword [esi + 4]
mov edx, dword [esp + 0x14]
push ebx
sub ecx, ebx
push edx
add ecx, eax
push ecx
mov dword [esi + 0x10], eax
call fcn.004f0800
add esp, 0xc
cmp byte [esp + 0x1e], 0
je 0x476bc7
mov edx, dword [esi + 0x10]
mov eax, edi
mov dword [esp + 0x70], edx
cdq
mov ecx, edi
mov edi, dword [esp + 0x70]
xor ebx, ebx
add edi, eax
adc ebx, edx
mov edx, dword [esi + 8]
xor eax, eax
cmp ebx, eax
mov dword [esp + 0x78], edi
jl 0x476b73
jg 0x476b60
cmp edi, edx
jb 0x476b73
mov eax, dword [esp + 0x20]
push eax
call fcn.00476d90
mov ecx, eax
add esp, 4
test ecx, ecx
jle 0x476bc7
mov eax, 1
mov edi, dword [esi + 0x10]
mov edx, dword [esi + 4]
sub ecx, eax
mov byte [edx + edi], 0x20
add dword [esi + 0x10], eax
test ecx, ecx
jg 0x476b78
jmp 0x476bc7
mov eax, dword [esi + 0x10]
add eax, ebx
cmp eax, dword [esi + 8]
jb 0x476baa
mov ecx, dword [esp + 0x14]
push ecx
mov eax, ebx
mov ecx, esi
call fcn.00476f00
add esp, 4
jmp 0x476bc7
test ebx, ebx
je 0x476bc7
mov ecx, dword [esi + 4]
mov edx, dword [esp + 0x14]
push ebx
sub ecx, ebx
push edx
add ecx, eax
push ecx
mov dword [esi + 0x10], eax
call fcn.004f0800
add esp, 0xc
mov edi, dword [esp + 0x44]
test edi, edi
je 0x476c6d
mov esi, dword [esi]
test esi, esi
je 0x476c0d
cmp dword [esi + 0x1d8], 0
je 0x476bed
mov eax, edi
mov ecx, esi
call fcn.00475120
jmp 0x476c65
cmp edi, dword [esi + 0x128]
jb 0x476c0d
cmp edi, dword [esi + 0x12c]
jae 0x476c0d
mov edx, dword [esi + 0x124]
mov dword [edi], edx
mov dword [esi + 0x124], edi
jmp 0x476c65
cmp dword [0x52e0e0], 0
je 0x476c5b
mov eax, dword [0x53a950]
test eax, eax
je 0x476c29
push eax
call dword [0x52e13c]
add esp, 4
push edi
call dword [0x52e118]
sub dword [0x53a8e8], eax
dec dword [0x53a90c]
add esp, 4
push edi
call dword [0x52e110]
mov eax, dword [0x53a950]
add esp, 4
test eax, eax
je 0x476c65
push eax
call dword [0x52e144]
jmp 0x476c62
push edi
call dword [0x52e110]
add esp, 4
mov dword [esp + 0x44], 0
mov eax, dword [esp + 0x2c]
inc eax
mov dword [esp + 0x2c], eax
movsx eax, byte [eax]
test eax, eax
jne 0x4759eb
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xd0]
xor ecx, esp
call fcn.004efe2a
mov esp, ebp
pop ebp
ret
mov eax, dword [ecx + 0x10]
inc eax
cmp eax, dword [ecx + 8]
jb 0x476cc6
push 0x508854
mov eax, 1
call fcn.00476f00
add esp, 4
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xd0]
xor ecx, esp
call fcn.004efe2a
mov esp, ebp
pop ebp
ret
mov dword [ecx + 0x10], eax
mov ecx, dword [ecx + 4]
mov dl, byte [0x508854]
mov byte [ecx + eax - 1], dl
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xd0]
xor ecx, esp
call fcn.004efe2a
mov esp, ebp
pop ebp
ret
fstp st(0)
mov eax, dword [esp + 0x30]
mov byte [eax + 0x14], 7
mov dword [eax + 8], 0
mov ecx, dword [esp + 0xdc]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.004efe2a
mov esp, ebp
pop ebp
ret