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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xbc
mov eax, dword [0x5e2ec0]
xor eax, esp
mov dword [esp + 0xb8], eax
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 0x10]
push ebx
push esi
xor esi, esi
test byte [eax + 0x15], 2
push edi
mov dword [esp + 0x2c], eax
mov dword [esp + 0x34], ecx
mov dword [esp + 0x28], edx
mov dword [esp + 0x3c], esi
mov dword [esp + 0x4c], esi
mov dword [esp + 0x14], esi
je 0x40936b
mov eax, dword [edx]
add edx, 4
mov dword [esp + 0x28], edx
mov dword [esp + 0x4c], eax
mov byte [esp + 0x1a], 1
jmp 0x409370
mov byte [esp + 0x1a], 0
movsx eax, byte [ecx]
cmp eax, esi
je case.default.0x4095aa
mov edi, dword [esp + 0x34]
cmp eax, 0x25
je 0x4093b3
mov dword [esp + 0x14], edi
inc edi
mov al, byte [edi]
test al, al
je 0x409393
cmp al, 0x25
jne 0x409388
mov eax, edi
sub eax, dword [esp + 0x14]
push eax
push dword [esp + 0x18]
push dword [esp + 0x34]
call fcn.0040a402
add esp, 0xc
cmp byte [edi], 0
je case.default.0x4095aa
inc edi
movsx eax, byte [edi]
mov dword [esp + 0x34], edi
test eax, eax
je 0x40a232
mov byte [esp + 0x33], 0
mov byte [esp + 0x1b], 0
mov byte [esp + 0x23], 0
mov byte [esp + 0x22], 0
mov byte [esp + 0x19], 0
mov byte [esp + 0x21], 0
mov ecx, eax
sub ecx, 0x20
je 0x409429
dec ecx
je 0x409422
dec ecx
dec ecx
je 0x40941b
sub ecx, 8
je 0x409414
dec ecx
je 0x40940d
dec ecx
je 0x409406
sub ecx, 3
jne 0x40943a
mov byte [esp + 0x33], 1
jmp 0x40942e
mov byte [esp + 0x21], 1
jmp 0x40942e
mov byte [esp + 0x22], 0x2c
jmp 0x40942e
mov byte [esp + 0x19], 0x2b
jmp 0x40942e
mov byte [esp + 0x23], 1
jmp 0x40942e
mov byte [esp + 0x1b], 1
jmp 0x40942e
mov byte [esp + 0x19], 0x20
inc edi
movsx eax, byte [edi]
mov dword [esp + 0x34], edi
test eax, eax
jne 0x4093e1
cmp eax, 0x2a
jne 0x40948d
cmp byte [esp + 0x1a], 0
je 0x409455
mov eax, dword [esp + 0x4c]
call fcn.004092d3
mov esi, dword [esp + 0x28]
jmp 0x409462
mov esi, dword [esp + 0x28]
mov eax, dword [esi]
add esi, 4
mov dword [esp + 0x28], esi
mov dword [esp + 0x24], eax
test eax, eax
jge 0x409483
cmp eax, 0x80000001
mov byte [esp + 0x21], 1
jl 0x40947e
neg eax
mov dword [esp + 0x24], eax
jmp 0x409483
and dword [esp + 0x24], 0
inc edi
movsx eax, byte [edi]
mov dword [esp + 0x34], edi
jmp 0x4094b8
xor ecx, ecx
jmp 0x4094a5
cmp eax, 0x39
jg 0x4094aa
imul ecx, ecx, 0xa
inc edi
lea ecx, [ecx + eax - 0x30]
movsx eax, byte [edi]
mov dword [esp + 0x34], edi
cmp eax, 0x30
jge 0x409491
mov esi, dword [esp + 0x28]
and ecx, 0x7fffffff
mov dword [esp + 0x24], ecx
cmp eax, 0x2e
jne 0x409531
inc edi
movsx eax, byte [edi]
mov dword [esp + 0x34], edi
cmp eax, 0x2a
jne 0x409508
cmp byte [esp + 0x1a], 0
je 0x4094dc
mov eax, dword [esp + 0x4c]
call fcn.004092d3
jmp 0x4094e5
mov eax, dword [esi]
add esi, 4
mov dword [esp + 0x28], esi
mov dword [esp + 0x1c], eax
inc edi
cmp dword [esp + 0x1c], 0
movsx eax, byte [edi]
mov dword [esp + 0x34], edi
jge 0x409536
cmp dword [esp + 0x1c], 0x80000001
jl 0x409531
neg dword [esp + 0x1c]
jmp 0x409536
xor ecx, ecx
jmp 0x409520
cmp eax, 0x39
jg 0x409525
imul ecx, ecx, 0xa
inc edi
lea ecx, [ecx + eax - 0x30]
movsx eax, byte [edi]
mov dword [esp + 0x34], edi
cmp eax, 0x30
jge 0x40950c
and ecx, 0x7fffffff
mov dword [esp + 0x1c], ecx
jmp 0x409536
or dword [esp + 0x1c], 0xffffffff
cmp eax, 0x6c
jne 0x40955c
inc edi
movsx eax, byte [edi]
mov byte [esp + 0x12], 1
mov dword [esp + 0x34], edi
cmp eax, 0x6c
jne 0x409561
inc edi
movsx eax, byte [edi]
mov byte [esp + 0x12], 2
mov dword [esp + 0x34], edi
jmp 0x409561
mov byte [esp + 0x12], 0
mov edx, 0x5d67d0
mov dword [esp + 0x5c], edx
mov byte [esp + 0x13], 0x11
xor ecx, ecx
mov edi, edx
movsx ebx, byte [edi]
cmp eax, ebx
je 0x40958a
add edi, 6
inc ecx
cmp edi, 0x5d685a
jl 0x409573
mov ebx, edx
jmp 0x40959c
imul ecx, ecx, 6
add ecx, edx
mov ebx, ecx
mov al, byte [ebx + 3]
mov dword [esp + 0x5c], ebx
mov byte [esp + 0x13], al
movzx eax, byte [esp + 0x13]
cmp eax, 0x10
ja case.default.0x4095aa
jmp dword [eax*4 + 0x40a24d]
mov byte [esp + 0x12], 1
mov byte [esp + 0x22], 0
test byte [ebx + 2], 1
je 0x409637
cmp byte [esp + 0x1a], 0
je 0x4095d3
mov eax, dword [esp + 0x4c]
call fcn.004092d3
jmp 0x4095f5
cmp byte [esp + 0x12], 0
je 0x4095eb
cmp byte [esp + 0x12], 2
jne 0x4095eb
mov eax, dword [esi]
mov edx, dword [esi + 4]
add esi, 8
jmp 0x4095f1
mov eax, dword [esi]
add esi, 4
cdq
mov dword [esp + 0x28], esi
xor edi, edi
cmp edx, edi
jg 0x409627
jl 0x409601
cmp eax, edi
jae 0x409627
cmp eax, edi
jne 0x409614
mov ecx, connect
cmp edx, ecx
jne 0x409614
mov dword [esp + 0x64], ecx
jmp 0x409620
neg eax
adc edx, edi
neg edx
mov edi, eax
mov dword [esp + 0x64], edx
mov byte [esp + 0x12], 0x2d
jmp 0x40967e
mov edi, eax
mov al, byte [esp + 0x19]
mov dword [esp + 0x64], edx
mov byte [esp + 0x12], al
jmp 0x40967e
cmp byte [esp + 0x1a], 0
je 0x40964f
mov eax, dword [esp + 0x4c]
call fcn.004092d3
mov edi, eax
mov dword [esp + 0x64], edx
jmp 0x409679
cmp byte [esp + 0x12], 0
je 0x40966b
cmp byte [esp + 0x12], 2
jne 0x40966b
mov eax, dword [esi + 4]
mov edi, dword [esi]
add esi, 8
mov dword [esp + 0x64], eax
jmp 0x409675
mov edi, dword [esi]
add esi, 4
and dword [esp + 0x64], 0
mov dword [esp + 0x28], esi
mov byte [esp + 0x12], 0
mov eax, edi
or eax, dword [esp + 0x64]
jne 0x40968a
mov byte [esp + 0x23], al
cmp byte [esp + 0x33], 0
je 0x4096aa
mov eax, dword [esp + 0x24]
xor ecx, ecx
cmp byte [esp + 0x12], cl
setne cl
sub eax, ecx
cmp dword [esp + 0x1c], eax
jge 0x4096aa
mov dword [esp + 0x1c], eax
cmp dword [esp + 0x1c], 0x25
jge 0x4096be
push 0x46
lea eax, [esp + 0x7c]
pop esi
mov dword [esp + 0x48], eax
jmp 0x4096ff
mov eax, dword [esp + 0x1c]
cdq
push 3
pop ecx
idiv ecx
cdq
mov esi, eax
mov eax, dword [esp + 0x1c]
mov ecx, edx
cdq
add esi, eax
adc ecx, edx
add esi, 0xa
adc ecx, 0
mov eax, esi
or eax, ecx
je 0x4096ed
push ecx
push esi
call fcn.00408c1f
pop ecx
pop ecx
jmp 0x4096ef
xor eax, eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x48], eax
test eax, eax
je 0x40a080
cmp byte [esp + 0x13], 0xf
lea eax, [eax + esi - 1]
mov dword [esp + 0x38], esi
mov dword [esp + 0x14], eax
jne 0x409762
push 0
push 0xa
push dword [esp + 0x6c]
push edi
call fcn.0055ce50
mov esi, ecx
cmp esi, 4
mov dword [esp + 0x44], ebx
jge 0x40973f
push 0
push 0xa
push edx
push eax
call fcn.0055e180
cmp eax, 1
jne 0x409741
test edx, edx
jne 0x409741
xor esi, esi
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x5c]
lea ecx, [esi + esi]
mov dl, byte [ecx + 0x5d685d]
dec eax
mov byte [eax], dl
mov cl, byte [ecx + str.thstndrd]
dec eax
mov dword [esp + 0x14], eax
mov byte [eax], cl
movzx eax, byte [ebx + 1]
movzx esi, byte [ebx + 4]
cdq
add esi, str.0123456789ABCDEF0123456789abcdef
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], edx
push dword [esp + 0x74]
dec dword [esp + 0x18]
push dword [esp + 0x74]
push dword [esp + 0x6c]
push edi
call fcn.0055ce50
mov edi, dword [esp + 0x14]
mov cl, byte [esi + ecx]
mov byte [edi], cl
mov dword [esp + 0x44], ebx
mov edi, eax
mov dword [esp + 0x64], edx
test edx, edx
ja 0x409779
jb 0x4097ac
test edi, edi
ja 0x409779
mov eax, dword [esp + 0x48]
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x38]
sub eax, edi
lea eax, [eax + ecx - 1]
mov ecx, dword [esp + 0x1c]
cmp ecx, eax
jle 0x4097d5
sub ecx, eax
add eax, ecx
dec edi
dec ecx
mov byte [edi], 0x30
jne 0x4097ca
mov dword [esp + 0x14], edi
mov bl, byte [esp + 0x22]
test bl, bl
je 0x40980a
dec eax
push 3
cdq
pop ecx
idiv ecx
sub edi, eax
lea esi, [edx + 1]
mov dword [esp + 0x14], edi
xor ecx, ecx
jmp 0x409806
dec esi
lea edx, [eax + ecx]
mov dl, byte [edx + edi]
mov byte [ecx + edi], dl
jne 0x409805
inc ecx
push 3
mov byte [ecx + edi], bl
dec eax
pop esi
inc ecx
test eax, eax
jg 0x4097f1
mov al, byte [esp + 0x12]
test al, al
je 0x409819
dec edi
mov dword [esp + 0x14], edi
mov byte [edi], al
cmp byte [esp + 0x23], 0
je 0x409847
mov eax, dword [esp + 0x5c]
mov al, byte [eax + 5]
test al, al
je 0x409847
movzx eax, al
add eax, 0x5d67c8
mov cl, byte [eax]
test cl, cl
je 0x409847
dec edi
inc eax
mov byte [edi], cl
mov cl, byte [eax]
test cl, cl
jne 0x409839
mov dword [esp + 0x14], edi
mov ebx, dword [esp + 0x48]
sub ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x38]
lea ebx, [ebx + eax - 1]
jmp 0x40a1ab
cmp byte [esp + 0x1a], 0
je 0x409883
mov edx, dword [esp + 0x4c]
mov eax, dword [edx + 4]
cmp dword [edx], eax
jg 0x409872
fldz
jmp 0x40988c
mov ecx, dword [edx + 8]
mov ecx, dword [ecx + eax*4]
inc eax
mov dword [edx + 4], eax
call fcn.0041e528
jmp 0x40988c
fld qword [esi]
add esi, 8
mov dword [esp + 0x28], esi
xor ecx, ecx
fstp qword [esp + 0x40]
cmp dword [esp + 0x1c], ecx
jge 0x4098a0
mov dword [esp + 0x1c], 6
fldz
fcomp qword [esp + 0x40]
fnstsw ax
test ah, 0x41
jne 0x4098bb
fld qword [esp + 0x40]
mov dl, 0x2d
fchs
fstp qword [esp + 0x40]
jmp 0x4098bf
mov dl, byte [esp + 0x19]
cmp byte [esp + 0x13], 3
mov byte [esp + 0x12], dl
jne 0x4098d4
cmp dword [esp + 0x1c], ecx
jle 0x4098d4
dec dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
fld qword [0x5df878]
and eax, 0xfff
jmp 0x4098f2
fld qword [esp + 0x50]
dec eax
fmul qword [0x5df948]
cmp eax, ecx
fstp qword [esp + 0x50]
jg 0x4098e5
cmp byte [esp + 0x13], 1
jne 0x40990b
fld qword [esp + 0x50]
fadd qword [esp + 0x40]
fstp qword [esp + 0x40]
fld qword [esp + 0x40]
push ecx
push ecx
fstp qword [esp]
mov dword [esp + 0x1c], ecx
call fcn.0040af58
add esp, 8
test eax, eax
je 0x409934
push 3
mov dword [esp + 0x18], 0x5db55c
pop ebx
jmp 0x40a1ab
fldz
fld qword [esp + 0x40]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 0x41
jne 0x409a77
fld1
mov ecx, 0x15e
fld st(0)
fld qword [0x5df940]
fcom st(3)
fnstsw ax
test ah, 0x41
jp 0x409976
cmp dword [esp + 0x14], ecx
jg 0x409976
add dword [esp + 0x14], 0x64
fmul st(1), st(0)
fld st(1)
fmul st(1)
fcomp st(4)
jmp 0x40995a
fstp st(0)
fld st(0)
fld qword [0x5df938]
fmul st(1), st(0)
fxch st(4)
fcom st(1)
fnstsw ax
test ah, 1
je 0x409997
fstp st(4)
fstp st(0)
jmp 0x4099b7
fxch st(1)
fxch st(2)
cmp dword [esp + 0x14], ecx
jg 0x40998d
add dword [esp + 0x14], 0xa
fstp st(2)
fld st(0)
fmul st(4)
fcom st(2)
fnstsw ax
test ah, 0x41
jnp 0x409993
fstp st(4)
fstp st(3)
fxch st(2)
fld st(0)
fld qword [0x5df868]
fmul st(1), st(0)
fxch st(4)
fcom st(1)
fnstsw ax
test ah, 1
je 0x4099d4
fstp st(1)
jmp 0x4099f1
fxch st(1)
fxch st(2)
cmp dword [esp + 0x14], ecx
jg 0x4099cc
inc dword [esp + 0x14]
fstp st(2)
fld st(0)
fmul st(4)
fcom st(2)
fnstsw ax
test ah, 0x41
jnp 0x4099d0
fstp st(0)
fxch st(1)
fdivrp st(1)
fst qword [esp + 0x40]
fld qword [0x5df930]
fcom st(1)
fnstsw ax
test ah, 0x41
je 0x409a2a
fstp st(0)
fcom st(1)
fnstsw ax
test ah, 5
jp 0x409a48
dec dword [esp + 0x14]
fmul st(2)
fcom st(1)
fnstsw ax
test ah, 5
jnp 0x409a11
fstp st(1)
fst qword [esp + 0x40]
jmp 0x409a4a
fxch st(1)
sub dword [esp + 0x14], 8
fxch st(1)
fmul qword [0x5df928]
fcom st(1)
fnstsw ax
test ah, 5
jnp 0x409a28
fstp st(1)
fst qword [esp + 0x40]
jmp 0x409a08
fstp st(1)
cmp dword [esp + 0x14], ecx
jle 0x409a7f
lea eax, [esp + 0x78]
fstp st(0)
mov dword [esp + 0x14], eax
fstp st(0)
xor eax, eax
test dl, dl
setne al
mov byte [esp + 0x78], dl
mov dword [esp + eax + 0x78], 0x666e49
lea ebx, [eax + 3]
jmp 0x40a1ab
fld qword [0x5df868]
fxch st(1)
cmp byte [esp + 0x13], 1
lea ebx, [esp + 0x78]
je 0x409ab1
fadd qword [esp + 0x50]
fstp qword [esp + 0x40]
fcomp qword [esp + 0x40]
fnstsw ax
test ah, 0x41
jp 0x409ab5
fld qword [esp + 0x40]
inc dword [esp + 0x14]
fmul qword [0x5df948]
fstp qword [esp + 0x40]
jmp 0x409ab5
fstp st(0)
fstp st(0)
cmp byte [esp + 0x13], 3
jne 0x409afb
cmp byte [esp + 0x23], 0
sete byte [esp + 0x22]
cmp dword [esp + 0x14], 0xfffffffc
jl 0x409af4
mov eax, dword [esp + 0x1c]
cmp dword [esp + 0x14], eax
jg 0x409af4
sub eax, dword [esp + 0x14]
mov byte [esp + 0x13], 1
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x38], eax
test eax, eax
jle 0x409b0f
mov edi, eax
jmp 0x409b11
mov byte [esp + 0x13], 2
jmp 0x409b0a
cmp byte [esp + 0x13], 2
mov al, byte [esp + 0x1b]
mov byte [esp + 0x22], al
jne 0x409ae4
and dword [esp + 0x38], 0
xor edi, edi
mov eax, dword [esp + 0x1c]
cdq
mov ecx, eax
mov eax, dword [esp + 0x24]
mov esi, edx
cdq
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], edx
mov eax, edi
cdq
add eax, dword [esp + 0x68]
adc edx, dword [esp + 0x6c]
add eax, ecx
adc edx, esi
mov dword [esp + 0x54], edx
js 0x409b81
jg 0x409b43
cmp eax, 0x37
jbe 0x409b81
mov eax, dword [esp + 0x38]
test eax, eax
jg 0x409b4d
xor eax, eax
cdq
add eax, dword [esp + 0x68]
adc edx, dword [esp + 0x6c]
add eax, ecx
adc edx, esi
add eax, 0xf
adc edx, 0
mov ecx, eax
or ecx, edx
je 0x409b71
push edx
push eax
call fcn.00408c1f
pop ecx
pop ecx
jmp 0x409b73
xor eax, eax
mov dword [esp + 0x3c], eax
mov ebx, eax
test eax, eax
je 0x40a080
movzx eax, byte [esp + 0x1b]
mov edi, dword [esp + 0x1c]
imul eax, eax, 0xa
add eax, 0x10
mov dword [esp + 0x50], eax
test edi, edi
setg al
or al, byte [esp + 0x1b]
mov dword [esp + 0x48], ebx
or al, byte [esp + 0x23]
mov byte [esp + 0x19], al
mov al, byte [esp + 0x12]
test al, al
je 0x409bb4
mov byte [ebx], al
inc ebx
cmp dword [esp + 0x38], 0
jge 0x409bc1
mov byte [ebx], 0x30
inc ebx
jmp 0x409bd7
lea ecx, [esp + 0x50]
lea esi, [esp + 0x40]
call fcn.004092a7
mov byte [ebx], al
inc ebx
dec dword [esp + 0x38]
jns 0x409bc1
cmp byte [esp + 0x19], 0
je 0x409be2
mov byte [ebx], 0x2e
inc ebx
inc dword [esp + 0x38]
jns 0x409c11
mov esi, dword [esp + 0x38]
neg esi
push esi
push 0x30
push ebx
call fcn.0055bfc0
add esp, 0xc
add ebx, esi
sub edi, esi
jmp 0x409c11
lea ecx, [esp + 0x50]
lea esi, [esp + 0x40]
dec edi
call fcn.004092a7
mov byte [ebx], al
inc ebx
test edi, edi
jg 0x409c00
cmp byte [esp + 0x22], 0
je 0x409c4c
cmp byte [esp + 0x19], 0
je 0x409c4c
jmp 0x409c2a
mov ebx, eax
mov byte [ebx], 0
lea eax, [ebx - 1]
cmp byte [eax], 0x30
je 0x409c25
lea eax, [ebx - 1]
cmp byte [eax], 0x2e
jne 0x409c4c
cmp byte [esp + 0x1b], 0
je 0x409c47
mov byte [ebx], 0x30
inc ebx
jmp 0x409c4c
mov ebx, eax
mov byte [ebx], 0
cmp byte [esp + 0x13], 2
jne 0x409c9b
mov eax, dword [esp + 0x5c]
movzx eax, byte [eax + 4]
mov al, byte [eax + str.0123456789ABCDEF0123456789abcdef]
mov byte [ebx], al
mov eax, dword [esp + 0x14]
inc ebx
test eax, eax
jge 0x409c74
mov byte [ebx], 0x2d
inc ebx
neg eax
jmp 0x409c78
mov byte [ebx], 0x2b
inc ebx
cmp eax, 0x64
jl 0x409c8a
cdq
push 0x64
pop ecx
idiv ecx
add al, 0x30
mov byte [ebx], al
inc ebx
mov eax, edx
cdq
push 0xa
pop ecx
idiv ecx
add al, 0x30
mov byte [ebx], al
inc ebx
add dl, 0x30
mov byte [ebx], dl
inc ebx
mov edi, dword [esp + 0x48]
mov byte [ebx], 0
sub ebx, edi
cmp byte [esp + 0x33], 0
mov dword [esp + 0x14], edi
je 0x40a1ab
cmp byte [esp + 0x21], 0
jne 0x40a1ab
cmp ebx, dword [esp + 0x24]
jge 0x40a1ab
mov ecx, dword [esp + 0x24]
mov eax, ecx
sub eax, ebx
cmp ecx, eax
jl 0x409ce3
mov esi, edi
sub esi, eax
mov dl, byte [esi + ecx]
mov byte [ecx + edi], dl
dec ecx
cmp ecx, eax
jge 0x409cd8
xor ecx, ecx
cmp byte [esp + 0x12], cl
setne cl
test eax, eax
je 0x409cfe
push eax
add ecx, edi
push 0x30
push ecx
call fcn.0055bfc0
add esp, 0xc
mov ebx, dword [esp + 0x24]
jmp 0x40a1ab
cmp byte [esp + 0x1a], 0
jne 0x40a1a5
mov ecx, dword [esp + 0x2c]
mov eax, dword [esi]
mov ecx, dword [ecx + 0x10]
add esi, 4
mov dword [esp + 0x28], esi
mov dword [eax], ecx
jmp 0x40a1a5
lea eax, [esp + 0x78]
xor ebx, ebx
mov byte [esp + 0x78], 0x25
mov dword [esp + 0x14], eax
inc ebx
jmp 0x40a1ab
cmp byte [esp + 0x1a], 0
je 0x409d96
mov ecx, dword [esp + 0x4c]
call fcn.004092f2
xor ebx, ebx
inc ebx
test eax, eax
je 0x409d8c
movsx ecx, byte [eax]
mov byte [esp + 0x78], cl
and ecx, 0xc0
inc eax
cmp cl, 0xc0
jne 0x409e39
mov cl, byte [eax]
mov dl, cl
and dl, 0xc0
cmp dl, 0x80
jne 0x409e39
mov byte [esp + ebx + 0x78], cl
inc ebx
inc eax
cmp ebx, 4
jl 0x409d6c
jmp 0x409e39
mov byte [esp + 0x78], 0
jmp 0x409e39
mov eax, dword [esi]
add esi, 4
mov dword [esp + 0x28], esi
cmp eax, 0x80
jae 0x409db2
xor ebx, ebx
mov byte [esp + 0x78], al
inc ebx
jmp 0x409e39
mov ecx, eax
cmp eax, 0x800
jae 0x409dd4
shr ecx, 6
and cl, 0x1f
sub cl, 0x40
and al, 0x3f
add al, 0x80
mov byte [esp + 0x78], cl
mov byte [esp + 0x79], al
push 2
jmp 0x409e38
cmp eax, 0x10000
jae 0x409e03
shr ecx, 0xc
and cl, 0xf
sub cl, 0x20
mov byte [esp + 0x78], cl
mov ecx, eax
shr ecx, 6
and cl, 0x3f
add cl, 0x80
and al, 0x3f
add al, 0x80
mov byte [esp + 0x79], cl
mov byte [esp + 0x7a], al
push 3
jmp 0x409e38
shr ecx, 0x12
and cl, 7
sub cl, 0x10
mov byte [esp + 0x78], cl
mov ecx, eax
shr ecx, 0xc
and cl, 0x3f
add cl, 0x80
mov byte [esp + 0x79], cl
mov ecx, eax
shr ecx, 6
and cl, 0x3f
add cl, 0x80
and al, 0x3f
add al, 0x80
mov byte [esp + 0x7a], cl
mov byte [esp + 0x7b], al
push 4
pop ebx
mov esi, dword [esp + 0x1c]
cmp esi, 1
jle 0x409e88
xor eax, eax
inc eax
sub eax, esi
add dword [esp + 0x24], eax
cmp dword [esp + 0x24], 1
jle 0x409e72
cmp byte [esp + 0x21], 0
jne 0x409e72
mov eax, dword [esp + 0x24]
push 0x20
dec eax
push eax
push dword [esp + 0x34]
call fcn.0040a388
add esp, 0xc
and dword [esp + 0x24], 0
dec esi
push ebx
lea eax, [esp + 0x7c]
push eax
push dword [esp + 0x34]
call fcn.0040a402
add esp, 0xc
dec esi
jne 0x409e73
lea eax, [esp + 0x78]
mov dword [esp + 0x14], eax
jmp 0x40a0fc
cmp byte [esp + 0x1a], 0
je 0x409eb2
mov ecx, dword [esp + 0x4c]
call fcn.004092f2
mov esi, eax
mov dword [esp + 0x14], eax
mov byte [esp + 0x13], 5
jmp 0x409ec0
add esi, 4
mov dword [esp + 0x28], esi
mov esi, dword [esi - 4]
mov dword [esp + 0x14], esi
xor eax, eax
cmp esi, eax
jne 0x409ed1
mov esi, 0x5db560
mov dword [esp + 0x14], esi
jmp 0x409f2e
cmp byte [esp + 0x13], 6
jne 0x409f2e
mov edi, dword [esp + 0x2c]
cmp dword [edi + 0x10], eax
jne 0x409f2a
cmp dword [edi + 0xc], eax
je 0x409f2a
cmp dword [esp + 0x24], eax
jne 0x409f2a
cmp dword [esp + 0x1c], eax
jge 0x409f2a
cmp byte [edi + 0x14], 0
jne 0x409f2a
mov ecx, dword [edi]
push esi
mov dword [edi + 4], esi
call fcn.00408cdb
mov dword [edi + 8], eax
mov eax, esi
pop ecx
lea ecx, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x409f0c
sub eax, ecx
mov ecx, edi
or byte [ecx + 0x15], 4
and eax, 0x7fffffff
mov dword [ecx + 0x10], eax
xor ebx, ebx
jmp 0x40a1ab
mov dword [esp + 0x3c], esi
cmp dword [esp + 0x1c], eax
jl 0x409f91
cmp byte [esp + 0x1b], 0
je 0x409f6b
mov ebx, dword [esp + 0x14]
jmp 0x409f5b
mov al, byte [ebx]
dec dword [esp + 0x1c]
test al, al
je 0x409f62
inc ebx
cmp al, 0xc0
jb 0x409f5b
jmp 0x409f53
inc ebx
mov al, byte [ebx]
and al, 0xc0
cmp al, 0x80
je 0x409f52
cmp dword [esp + 0x1c], 0
jg 0x409f41
sub ebx, dword [esp + 0x14]
jmp 0x40a0f1
xor ebx, ebx
cmp dword [esp + 0x1c], ebx
jle 0x40a1ab
mov eax, dword [esp + 0x14]
cmp byte [ebx + eax], 0
je 0x40a1ab
inc ebx
cmp ebx, dword [esp + 0x1c]
jl 0x409f77
jmp 0x40a0f1
mov eax, esi
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x409f96
sub eax, edx
and eax, 0x7fffffff
jmp 0x40a0ef
cmp byte [esp + 0x13], 0xe
setne cl
dec cl
and cl, 0xfb
add cl, 0x27
cmp byte [esp + 0x1a], 0
mov byte [esp + 0x19], cl
je 0x409fd5
mov ecx, dword [esp + 0x4c]
call fcn.004092f2
mov cl, byte [esp + 0x19]
mov ebx, eax
jmp 0x409fde
mov ebx, dword [esi]
add esi, 4
mov dword [esp + 0x28], esi
xor eax, eax
xor edi, edi
cmp ebx, edi
sete al
mov dword [esp + 0x50], eax
cmp eax, edi
je 0x40a000
cmp byte [esp + 0x13], 0xa
mov ebx, str.NULL
je 0x40a000
mov ebx, str._NULL_
mov edx, dword [esp + 0x1c]
xor esi, esi
test edx, edx
je 0x40a034
mov al, byte [esi + ebx]
test al, al
je 0x40a034
cmp al, cl
jne 0x40a016
inc edi
cmp byte [esp + 0x1b], 0
je 0x40a030
and al, 0xc0
cmp al, 0xc0
jne 0x40a030
jmp 0x40a026
inc esi
mov al, byte [ebx + esi + 1]
and al, 0xc0
cmp al, 0x80
je 0x40a025
inc esi
dec edx
jne 0x40a00a
cmp dword [esp + 0x50], 0
jne 0x40a04c
cmp byte [esp + 0x13], 0xa
jne 0x40a04c
mov dword [esp + 0x48], 1
jmp 0x40a051
and dword [esp + 0x48], 0
lea eax, [edi + esi + 3]
cmp eax, 0x46
jle 0x40a0a1
cdq
mov edi, eax
or edi, edx
je 0x40a070
push edx
push eax
call fcn.00408c1f
pop ecx
pop ecx
mov cl, byte [esp + 0x19]
jmp 0x40a072
xor eax, eax
mov dword [esp + 0x3c], eax
mov edi, eax
mov dword [esp + 0x14], eax
test eax, eax
jne 0x40a0a9
mov eax, dword [esp + 0x2c]
and dword [eax + 8], 0
mov byte [eax + 0x14], 7
mov ecx, dword [esp + 0xc4]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0055a67a
mov esp, ebp
pop ebp
ret
lea edi, [esp + 0x78]
mov dword [esp + 0x14], edi
xor eax, eax
cmp dword [esp + 0x48], eax
je 0x40a0b4
mov byte [edi], cl
inc eax
mov dword [esp + 0x50], esi
xor esi, esi
cmp dword [esp + 0x50], esi
jle 0x40a0dc
mov cl, byte [esi + ebx]
mov byte [eax + edi], cl
inc eax
cmp cl, byte [esp + 0x19]
jne 0x40a0d1
mov byte [eax + edi], cl
inc eax
inc esi
cmp esi, dword [esp + 0x50]
jl 0x40a0c0
mov cl, byte [esp + 0x19]
cmp dword [esp + 0x48], 0
je 0x40a0e7
mov byte [eax + edi], cl
inc eax
mov ecx, dword [esp + 0x14]
mov byte [eax + ecx], 0
mov ebx, eax
cmp byte [esp + 0x1b], 0
je 0x40a1ab
cmp dword [esp + 0x24], 0
jle 0x40a1ab
lea eax, [ebx - 1]
jmp 0x40a120
mov ecx, dword [esp + 0x14]
mov cl, byte [eax + ecx]
and cl, 0xc0
dec eax
cmp cl, 0x80
jne 0x40a120
inc dword [esp + 0x24]
test eax, eax
jge 0x40a10c
jmp 0x40a1ab
mov edx, dword [esp + 0x2c]
test byte [edx + 0x15], 1
je case.default.0x4095aa
mov eax, dword [esi]
add esi, 4
mov dword [esp + 0x28], esi
test eax, eax
je 0x40a1a5
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x40a1a5
push ecx
push dword [eax]
push edx
call fcn.0040a402
add esp, 0xc
jmp 0x40a1a5
mov edi, dword [esp + 0x2c]
test byte [edi + 0x15], 1
je case.default.0x4095aa
mov eax, dword [esi]
add esi, 4
mov ecx, dword [esi]
add esi, 4
imul ecx, ecx, 0x48
mov dword [esp + 0x28], esi
lea esi, [ecx + eax + 8]
mov eax, dword [esi + 4]
test eax, eax
je 0x40a19a
push eax
push edi
call fcn.0040a43e
push 1
push 0x5d3854
push edi
call fcn.0040a402
add esp, 0x14
push dword [esi + 8]
push edi
call fcn.0040a43e
pop ecx
pop ecx
xor ebx, ebx
mov dword [esp + 0x24], ebx
mov esi, dword [esp + 0x24]
sub esi, ebx
test esi, esi
jle 0x40a1f1
cmp byte [esp + 0x21], 0
jne 0x40a1cb
push 0x20
push esi
push dword [esp + 0x34]
call fcn.0040a388
add esp, 0xc
push ebx
push dword [esp + 0x18]
push dword [esp + 0x34]
call fcn.0040a402
add esp, 0xc
cmp byte [esp + 0x21], 0
je 0x40a202
push 0x20
push esi
push dword [esp + 0x34]
call fcn.0040a388
jmp 0x40a1ff
push ebx
push dword [esp + 0x18]
push dword [esp + 0x34]
call fcn.0040a402
add esp, 0xc
mov edx, dword [esp + 0x3c]
test edx, edx
je 0x40a21a
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax]
call fcn.00408d75
and dword [esp + 0x3c], 0
inc dword [esp + 0x34]
mov eax, dword [esp + 0x34]
movsx eax, byte [eax]
test eax, eax
jne 0x40937b
jmp case.default.0x4095aa
push 1
push 0x5db558
push dword [esp + 0x34]
call fcn.0040a402
add esp, 0xc
jmp case.default.0x4095aa