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

Disassembly:
push ebx
push esi
push edi
push ebp
add esp, 0xfffffea8
mov esi, edx
xor edx, edx
xor edi, edi
mov dword [esp + 4], ecx
mov dword [esp], eax
xor eax, eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x48], edx
mov eax, dword [esp]
test byte [eax + 0x15], 2
je 0x641f74
add dword [esp + 4], 4
mov edx, dword [esp + 4]
mov ecx, dword [edx - 4]
mov dword [esp + 0x48], ecx
mov byte [esp + 0x1c], 1
jmp 0x64363d
mov byte [esp + 0x1c], 0
jmp 0x64363d
cmp eax, 0x25
je 0x641fa7
mov edi, esi
inc esi
mov al, byte [esi]
test al, al
je 0x641f90
cmp al, 0x25
jne 0x641f85
mov ecx, esi
sub ecx, edi
mov edx, edi
mov eax, dword [esp]
call fcn.00643890
cmp byte [esi], 0
je case.default.0x642283
inc esi
movsx eax, byte [esi]
test eax, eax
jne 0x641fc6
mov edx, 0x67e1dc
mov ecx, 1
mov eax, dword [esp]
call fcn.00643890
jmp case.default.0x642283
xor edx, edx
mov byte [esp + 0x18], dl
mov byte [esp + 0x17], dl
mov byte [esp + 0x16], dl
mov byte [esp + 0x1a], dl
mov byte [esp + 0x15], dl
mov byte [esp + 0x14], dl
xor ebx, ebx
xor edx, edx
mov dword [esp + 0x10], edx
mov byte [esp + 0x19], 0
mov dword [esp + 8], 0xffffffff
mov ecx, eax
cmp ecx, 0x2c
jg 0x642045
je 0x6420a5
add ecx, 0xffffffe0
cmp ecx, 0xb
ja case.0x64200e.34
jmp dword [ecx*4 + 0x642015]
cmp ecx, 0x30
jg 0x64205a
je 0x64209b
sub ecx, 0x2d
je 0x642069
dec ecx
je 0x64218d
jmp case.0x64200e.34
add ecx, 0xffffffcf
sub ecx, 9
jb 0x6420d4
sub ecx, 0x32
je 0x6420b6
jmp case.0x64200e.34
mov byte [esp + 0x14], 1
jmp 0x642222
mov byte [esp + 0x15], 0x2b
jmp 0x642222
mov byte [esp + 0x15], 0x20
jmp 0x642222
mov byte [esp + 0x16], 1
jmp 0x642222
mov byte [esp + 0x17], 1
jmp 0x642222
mov byte [esp + 0x18], 1
jmp 0x642222
mov byte [esp + 0x1a], 0x2c
jmp 0x642222
mov bl, 1
jmp 0x642222
inc esi
mov byte [esp + 0x19], 1
movsx eax, byte [esi]
cmp eax, 0x6c
jne 0x6420cd
inc esi
movsx eax, byte [esi]
mov byte [esp + 0x19], 2
mov bl, 1
jmp 0x642222
add eax, 0xffffffd0
mov dword [esp + 0x4c], eax
jmp 0x6420ef
mov edx, dword [esp + 0x4c]
add edx, edx
lea edx, [edx + edx*4]
add edx, eax
sub edx, 0x30
mov dword [esp + 0x4c], edx
inc esi
movsx eax, byte [esi]
cmp eax, 0x30
jl 0x6420fd
cmp eax, 0x39
jle 0x6420dd
mov edx, dword [esp + 0x4c]
and edx, 0x7fffffff
cmp eax, 0x2e
mov dword [esp + 0x10], edx
je 0x64211c
cmp eax, 0x6c
je 0x64211c
mov bl, 1
jmp 0x642222
dec esi
jmp 0x642222
cmp byte [esp + 0x1c], 0
je 0x642138
mov eax, dword [esp + 0x48]
call fcn.00641e5c
mov dword [esp + 0x10], eax
jmp 0x642148
add dword [esp + 4], 4
mov edx, dword [esp + 4]
mov ecx, dword [edx - 4]
mov dword [esp + 0x10], ecx
cmp dword [esp + 0x10], 0
jge 0x64216c
mov byte [esp + 0x14], 1
cmp dword [esp + 0x10], 0x80000001
jl 0x642166
mov ecx, dword [esp + 0x10]
neg ecx
jmp 0x642168
xor ecx, ecx
mov dword [esp + 0x10], ecx
movsx eax, byte [esi + 1]
cmp eax, 0x2e
je 0x642222
cmp eax, 0x6c
je 0x642222
inc esi
mov bl, 1
movsx eax, byte [esi]
jmp 0x642222
inc esi
movsx eax, byte [esi]
cmp eax, 0x2a
jne 0x6421e2
cmp byte [esp + 0x1c], 0
je 0x6421ac
mov eax, dword [esp + 0x48]
call fcn.00641e5c
mov dword [esp + 8], eax
jmp 0x6421bc
add dword [esp + 4], 4
mov edx, dword [esp + 4]
mov ecx, dword [edx - 4]
mov dword [esp + 8], ecx
cmp dword [esp + 8], 0
jge 0x6421dc
cmp dword [esp + 8], 0x80000001
jl 0x6421d5
mov ecx, dword [esp + 8]
neg ecx
jmp 0x6421d8
or ecx, 0xffffffff
mov dword [esp + 8], ecx
inc esi
movsx eax, byte [esi]
jmp 0x642218
xor edx, edx
mov dword [esp + 0x50], edx
jmp 0x642200
mov edx, dword [esp + 0x50]
add edx, edx
lea edx, [edx + edx*4]
add edx, eax
sub edx, 0x30
inc esi
mov dword [esp + 0x50], edx
movsx eax, byte [esi]
cmp eax, 0x30
jl 0x64220a
cmp eax, 0x39
jle 0x6421ea
mov ecx, dword [esp + 0x50]
and ecx, 0x7fffffff
mov dword [esp + 8], ecx
cmp eax, 0x6c
jne 0x642220
dec esi
jmp 0x642222
mov bl, 1
test bl, bl
jne 0x642232
inc esi
movsx eax, byte [esi]
test eax, eax
jne 0x641ff5
mov dword [esp + 0x30], 0x67e108
mov byte [esp + 0x1b], 0x11
xor edx, edx
mov ecx, 0x67e108
movsx ebx, byte [ecx]
cmp eax, ebx
jne 0x64226b
mov eax, edx
add eax, eax
lea eax, [eax + eax*2]
add eax, 0x67e108
mov dword [esp + 0x30], eax
mov edx, dword [esp + 0x30]
mov cl, byte [edx + 3]
mov byte [esp + 0x1b], cl
jmp 0x642274
inc edx
add ecx, 6
cmp edx, 0x17
jl 0x642246
xor eax, eax
mov al, byte [esp + 0x1b]
cmp eax, 0x10
ja case.default.0x642283
jmp dword [eax*4 + 0x64228a]
mov byte [esp + 0x19], 1
mov byte [esp + 0x1a], 0
mov edx, dword [esp + 0x30]
test byte [edx + 2], 1
je 0x6423ab
cmp byte [esp + 0x1c], 0
je 0x642300
mov eax, dword [esp + 0x48]
call fcn.00641e5c
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], edx
jmp 0x642357
cmp byte [esp + 0x19], 0
je 0x642342
xor edx, edx
mov dl, byte [esp + 0x19]
cmp edx, 2
jne 0x64232b
add dword [esp + 4], 8
mov ecx, dword [esp + 4]
mov ebx, dword [ecx - 8]
mov dword [esp + 0x54], ebx
mov ebx, dword [ecx - 4]
mov dword [esp + 0x58], ebx
jmp 0x642357
add dword [esp + 4], 4
mov eax, dword [esp + 4]
mov eax, dword [eax - 4]
cdq
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], edx
jmp 0x642357
add dword [esp + 4], 4
mov ecx, dword [esp + 4]
mov eax, dword [ecx - 4]
cdq
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], edx
cmp dword [esp + 0x58], 0
jne 0x642367
cmp dword [esp + 0x54], 0
jae 0x642391
jmp 0x642369
jge 0x642391
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0x58]
not eax
not edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
add dword [esp + 0x20], 1
adc dword [esp + 0x24], 0
mov byte [esp + 0x1d], 0x2d
jmp 0x642423
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x24], ecx
mov al, byte [esp + 0x15]
mov byte [esp + 0x1d], al
jmp 0x642423
cmp byte [esp + 0x1c], 0
je 0x6423c5
mov eax, dword [esp + 0x48]
call fcn.00641e5c
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
jmp 0x64241e
cmp byte [esp + 0x19], 0
je 0x642408
xor edx, edx
mov dl, byte [esp + 0x19]
cmp edx, 2
jne 0x6423f0
add dword [esp + 4], 8
mov ecx, dword [esp + 4]
mov ebx, dword [ecx - 8]
mov dword [esp + 0x20], ebx
mov ebx, dword [ecx - 4]
mov dword [esp + 0x24], ebx
jmp 0x64241e
add dword [esp + 4], 4
mov eax, dword [esp + 4]
mov eax, dword [eax - 4]
xor edx, edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
jmp 0x64241e
add dword [esp + 4], 4
mov ecx, dword [esp + 4]
mov eax, dword [ecx - 4]
xor edx, edx
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
mov byte [esp + 0x1d], 0
cmp dword [esp + 0x24], 0
jne 0x642436
cmp dword [esp + 0x20], 0
jne 0x642436
mov byte [esp + 0x16], 0
cmp byte [esp + 0x18], 0
je 0x642469
cmp byte [esp + 0x1d], 0
setne cl
and ecx, 1
mov ebx, dword [esp + 0x10]
sub ebx, ecx
cmp ebx, dword [esp + 8]
jle 0x642469
cmp byte [esp + 0x1d], 0
setne al
and eax, 1
mov edx, dword [esp + 0x10]
sub edx, eax
mov dword [esp + 8], edx
cmp dword [esp + 8], 0x25
jge 0x642485
mov dword [esp + 0x38], 0x46
lea ecx, [esp + 0xe8]
mov dword [esp + 0x34], ecx
jmp 0x6424e0
mov eax, dword [esp + 8]
cdq
add eax, 0xa
adc edx, 0
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], edx
cmp byte [esp + 0x1a], 0
je 0x6424b4
mov eax, dword [esp + 8]
mov ecx, 3
cdq
idiv ecx
cdq
add dword [esp + 0x5c], eax
adc dword [esp + 0x60], edx
push dword [esp + 0x60]
push dword [esp + 0x60]
mov eax, dword [esp + 8]
call fcn.00641ec8
mov dword [esp + 0x3c], eax
mov dword [esp + 0x34], eax
cmp dword [esp + 0x34], 0
je case.default.0x642283
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x38], eax
mov edi, dword [esp + 0x38]
xor eax, eax
add edi, dword [esp + 0x34]
mov al, byte [esp + 0x1b]
dec edi
cmp eax, 0xf
jne 0x642556
push 0
push 0xa
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
call fcn.005c8794
mov dword [esp + 0x64], eax
cmp dword [esp + 0x64], 4
jge 0x642534
push 0
push 0xa
push 0
push 0xa
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x34]
call fcn.005c8748
call fcn.005c8794
cmp edx, 0
jne 0x64253a
cmp eax, 1
jne 0x64253a
xor ecx, ecx
mov dword [esp + 0x64], ecx
dec edi
mov eax, dword [esp + 0x64]
mov dl, byte [eax*2 + 0x67e193]
mov byte [edi], dl
dec edi
mov ecx, dword [esp + 0x64]
mov al, byte [ecx*2 + str.thstndrd]
mov byte [edi], al
mov edx, dword [esp + 0x30]
xor ecx, ecx
mov cl, byte [edx + 4]
add ecx, str.0123456789ABCDEF0123456789abcdef
mov dword [esp + 0x68], ecx
mov eax, dword [esp + 0x30]
mov dl, byte [eax + 1]
mov byte [esp + 0x6c], dl
dec edi
xor eax, eax
mov al, byte [esp + 0x6c]
cdq
push edx
push eax
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
call fcn.005c8794
mov edx, dword [esp + 0x68]
mov cl, byte [edx + eax]
mov byte [edi], cl
xor eax, eax
mov al, byte [esp + 0x6c]
cdq
push edx
push eax
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
call fcn.005c8748
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
cmp dword [esp + 0x24], 0
jne 0x6425be
cmp dword [esp + 0x20], 0
ja 0x642574
mov ecx, dword [esp + 0x38]
add ecx, dword [esp + 0x34]
dec ecx
sub ecx, edi
mov dword [esp + 0xc], ecx
mov eax, dword [esp + 8]
cmp eax, dword [esp + 0xc]
jle 0x6425eb
dec edi
mov byte [edi], 0x30
inc dword [esp + 0xc]
mov edx, dword [esp + 8]
cmp edx, dword [esp + 0xc]
jg 0x6425d9
cmp byte [esp + 0x1a], 0
je 0x642656
mov eax, dword [esp + 0xc]
mov ecx, 3
dec eax
cdq
idiv ecx
mov dword [esp + 0x70], eax
mov ecx, 3
mov eax, dword [esp + 0xc]
dec eax
cdq
idiv ecx
inc edx
mov dword [esp + 0x74], edx
sub edi, dword [esp + 0x70]
mov edx, dword [esp + 0x70]
cmp dword [esp + 0x70], 0
lea ecx, [edi + edx]
mov eax, edi
jle 0x642656
mov dl, byte [ecx]
mov byte [eax], dl
dec dword [esp + 0x74]
cmp dword [esp + 0x74], 0
jne 0x64264d
inc eax
inc ecx
mov dl, byte [esp + 0x1a]
mov byte [eax], dl
dec dword [esp + 0x70]
dec ecx
mov dword [esp + 0x74], 3
inc eax
inc ecx
cmp dword [esp + 0x70], 0
jg 0x642629
cmp byte [esp + 0x1d], 0
je 0x642664
dec edi
mov al, byte [esp + 0x1d]
mov byte [edi], al
cmp byte [esp + 0x16], 0
je 0x6426a3
mov ecx, dword [esp + 0x30]
cmp byte [ecx + 5], 0
je 0x6426a3
mov eax, dword [esp + 0x30]
xor edx, edx
mov dl, byte [eax + 5]
add edx, 0x67e1d5
mov dword [esp + 0x78], edx
jmp 0x642695
dec edi
mov cl, byte [esp + 0x7c]
mov byte [edi], cl
inc dword [esp + 0x78]
mov eax, dword [esp + 0x78]
mov dl, byte [eax]
mov byte [esp + 0x7c], dl
test dl, dl
jne 0x64268a
mov eax, dword [esp + 0x38]
add eax, dword [esp + 0x34]
dec eax
sub eax, edi
mov dword [esp + 0xc], eax
jmp 0x6435ca
cmp byte [esp + 0x1c], 0
je 0x6426ce
mov eax, dword [esp + 0x48]
call fcn.00641e80
fstp qword [esp + 0x28]
wait
jmp 0x6426e5
add dword [esp + 4], 8
mov edx, dword [esp + 4]
mov ecx, dword [edx - 8]
mov dword [esp + 0x28], ecx
mov ecx, dword [edx - 4]
mov dword [esp + 0x2c], ecx
cmp dword [esp + 8], 0
jge 0x6426f4
mov dword [esp + 8], 6
cmp dword [esp + 8], 0x5f5e100
jle 0x642706
mov dword [esp + 8], 0x5f5e100
movzx edi, byte [esp + 0x1b]
dec edi
jne 0x64271d
mov eax, dword [esp + 8]
neg eax
mov dword [esp + 0x80], eax
jmp 0x642750
xor edx, edx
mov dl, byte [esp + 0x1b]
cmp edx, 3
jne 0x642744
cmp dword [esp + 8], 0
jne 0x642737
mov dword [esp + 8], 1
mov ecx, dword [esp + 8]
mov dword [esp + 0x80], ecx
jmp 0x642750
mov edi, dword [esp + 8]
inc edi
mov dword [esp + 0x80], edi
push dword [esp + 0x2c]
push dword [esp + 0x2c]
cmp byte [esp + 0x1f], 0
je 0x642766
mov ecx, 0x1a
jmp 0x64276b
mov ecx, 0x10
lea eax, [esp + 0x138]
mov edx, dword [esp + 0x88]
call fcn.00644efc
cmp byte [esp + 0x131], 0
je 0x642832
cmp byte [esp + 0x131], 2
jne 0x6427bb
cmp byte [esp + 0x18], 0
je 0x6427a4
mov edi, str.null
jmp 0x6427a9
mov edi, 0x67e1e3
mov eax, edi
call fcn.00643db4
mov dword [esp + 0xc], eax
jmp 0x6435ca
cmp byte [esp + 0x18], 0
je 0x6427e4
mov edx, dword [esp + 0x13c]
mov byte [edx], 0x39
mov dword [esp + 0x138], 0x3e8
mov dword [esp + 0x134], 1
jmp 0x642832
mov edx, str._Inf
lea eax, [esp + 0xe8]
mov ecx, 5
call fcn.005c83bc
cmp byte [esp + 0x130], 0x2d
lea edi, [esp + 0xe8]
jne 0x64280d
jmp 0x642822
cmp byte [esp + 0x15], 0
je 0x642821
mov al, byte [esp + 0x15]
mov byte [esp + 0xe8], al
jmp 0x642822
inc edi
mov eax, edi
call fcn.00643db4
mov dword [esp + 0xc], eax
jmp 0x6435ca
cmp byte [esp + 0x130], 0x2d
jne 0x642843
mov byte [esp + 0x1d], 0x2d
jmp 0x64284b
mov dl, byte [esp + 0x15]
mov byte [esp + 0x1d], dl
mov ecx, dword [esp + 0x138]
dec ecx
mov dword [esp + 0x40], ecx
movzx edi, byte [esp + 0x1b]
cmp edi, 3
jne 0x64286c
cmp dword [esp + 8], 0
jle 0x64286c
dec dword [esp + 8]
xor eax, eax
mov al, byte [esp + 0x1b]
cmp eax, 3
jne 0x6428af
xor edx, edx
mov dl, byte [esp + 0x16]
cmp edx, 1
sbb ecx, ecx
neg ecx
mov byte [esp + 0x45], cl
cmp dword [esp + 0x40], 0xfffffffc
jl 0x642899
mov edi, dword [esp + 0x40]
cmp edi, dword [esp + 8]
jle 0x6428a0
mov byte [esp + 0x1b], 2
jmp 0x6428b7
mov eax, dword [esp + 0x40]
sub dword [esp + 8], eax
mov byte [esp + 0x1b], 1
jmp 0x6428b7
mov dl, byte [esp + 0x17]
mov byte [esp + 0x45], dl
xor ecx, ecx
mov cl, byte [esp + 0x1b]
cmp ecx, 2
jne 0x6428c6
xor ebx, ebx
jmp 0x6428ce
mov ebx, dword [esp + 0x138]
dec ebx
lea edi, [esp + 0xe8]
test ebx, ebx
jle 0x6428dd
mov eax, ebx
jmp 0x6428df
xor eax, eax
cdq
push edx
push eax
mov eax, dword [esp + 0x10]
cdq
add eax, dword [esp]
adc edx, dword [esp + 4]
add esp, 8
push edx
push eax
mov eax, dword [esp + 0x18]
cdq
add eax, dword [esp]
adc edx, dword [esp + 4]
add esp, 8
add eax, 0xf
adc edx, 0
mov dword [esp + 0x84], eax
mov dword [esp + 0x88], edx
cmp byte [esp + 0x1a], 0
je 0x64293b
test ebx, ebx
jle 0x64293b
lea eax, [ebx + 2]
mov ecx, 3
cdq
idiv ecx
cdq
add dword [esp + 0x84], eax
adc dword [esp + 0x88], edx
cmp dword [esp + 0x88], 0
jne 0x642951
cmp dword [esp + 0x84], 0x46
jbe 0x642978
jmp 0x642953
jle 0x642978
push dword [esp + 0x88]
push dword [esp + 0x88]
mov eax, dword [esp + 8]
call fcn.00641ec8
mov dword [esp + 0x3c], eax
mov edi, eax
test edi, edi
je case.default.0x642283
mov dword [esp + 0x34], edi
cmp dword [esp + 8], 0
jle 0x642987
mov al, 1
jmp 0x642989
xor eax, eax
or al, byte [esp + 0x16]
or al, byte [esp + 0x17]
mov byte [esp + 0x44], al
cmp byte [esp + 0x1d], 0
je 0x6429a3
mov dl, byte [esp + 0x1d]
mov byte [edi], dl
inc edi
xor ecx, ecx
test ebx, ebx
jge 0x6429af
mov byte [edi], 0x30
inc edi
jmp 0x6429f3
test ebx, ebx
jl 0x6429f3
cmp ecx, dword [esp + 0x134]
jge 0x6429cb
mov eax, ecx
inc ecx
mov edx, dword [esp + 0x13c]
mov al, byte [edx + eax]
jmp 0x6429cd
mov al, 0x30
mov byte [edi], al
inc edi
cmp byte [esp + 0x1a], 0
je 0x6429ee
mov eax, ebx
mov ebp, 3
cdq
idiv ebp
test edx, edx
jne 0x6429ee
cmp ebx, 1
jle 0x6429ee
mov byte [edi], 0x2c
inc edi
dec ebx
test ebx, ebx
jge 0x6429b3
cmp byte [esp + 0x44], 0
je 0x6429fe
mov byte [edi], 0x2e
inc edi
inc ebx
jmp 0x642a0a
mov byte [edi], 0x30
inc edi
dec dword [esp + 8]
inc ebx
test ebx, ebx
jge 0x642a34
cmp dword [esp + 8], 0
jg 0x642a01
jmp 0x642a34
cmp ecx, dword [esp + 0x134]
jge 0x642a2f
mov eax, ecx
inc ecx
mov edx, dword [esp + 0x13c]
mov bl, byte [edx + eax]
jmp 0x642a31
mov bl, 0x30
mov byte [edi], bl
inc edi
mov eax, dword [esp + 8]
add dword [esp + 8], 0xffffffff
test eax, eax
jg 0x642a17
cmp byte [esp + 0x45], 0
je 0x642a72
cmp byte [esp + 0x44], 0
je 0x642a72
jmp 0x642a55
dec edi
mov byte [edi], 0
cmp byte [edi - 1], 0x30
je 0x642a51
cmp byte [edi - 1], 0x2e
jne 0x642a72
cmp byte [esp + 0x17], 0
je 0x642a6e
mov byte [edi], 0x30
inc edi
jmp 0x642a72
dec edi
mov byte [edi], 0
xor edx, edx
mov dl, byte [esp + 0x1b]
cmp edx, 2
jne 0x642afb
mov ecx, dword [esp + 0x138]
dec ecx
mov dword [esp + 0x40], ecx
mov eax, dword [esp + 0x30]
xor edx, edx
mov dl, byte [eax + 4]
mov cl, byte [edx + str.0123456789ABCDEF0123456789abcdef]
mov byte [edi], cl
inc edi
cmp dword [esp + 0x40], 0
jge 0x642aac
mov byte [edi], 0x2d
inc edi
neg dword [esp + 0x40]
jmp 0x642ab0
mov byte [edi], 0x2b
inc edi
cmp dword [esp + 0x40], 0x64
jl 0x642ad8
mov eax, dword [esp + 0x40]
mov ecx, 0x64
cdq
idiv ecx
add al, 0x30
mov byte [edi], al
inc edi
mov ecx, 0x64
mov eax, dword [esp + 0x40]
cdq
idiv ecx
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x40]
mov ecx, 0xa
cdq
idiv ecx
add al, 0x30
mov byte [edi], al
inc edi
mov eax, dword [esp + 0x40]
mov ecx, 0xa
cdq
idiv ecx
add dl, 0x30
mov byte [edi], dl
inc edi
mov byte [edi], 0
sub edi, dword [esp + 0x34]
mov dword [esp + 0xc], edi
cmp byte [esp + 0x18], 0
mov edi, dword [esp + 0x34]
je 0x6435ca
cmp byte [esp + 0x14], 0
jne 0x6435ca
mov eax, dword [esp + 0xc]
cmp eax, dword [esp + 0x10]
jge 0x6435ca
mov edx, dword [esp + 0x10]
sub edx, dword [esp + 0xc]
mov dword [esp + 0x8c], edx
mov eax, dword [esp + 0x10]
cmp eax, dword [esp + 0x8c]
jl 0x642b63
mov edx, eax
sub edx, dword [esp + 0x8c]
mov cl, byte [edi + edx]
mov byte [edi + eax], cl
dec eax
cmp eax, dword [esp + 0x8c]
jge 0x642b4a
cmp byte [esp + 0x1d], 0
setne al
and eax, 1
jmp 0x642b75
mov byte [edi + eax], 0x30
inc eax
mov edx, dword [esp + 0x8c]
add dword [esp + 0x8c], 0xffffffff
test edx, edx
jne 0x642b70
mov ecx, dword [esp + 0x10]
mov dword [esp + 0xc], ecx
jmp 0x6435ca
cmp byte [esp + 0x1c], 0
jne 0x642bb0
mov eax, dword [esp]
mov edx, dword [eax + 0x10]
add dword [esp + 4], 4
mov ecx, dword [esp + 4]
mov eax, dword [ecx - 4]
mov dword [eax], edx
xor edx, edx
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], edx
jmp 0x6435ca
mov byte [esp + 0xe8], 0x25
mov dword [esp + 0xc], 1
lea edi, [esp + 0xe8]
jmp 0x6435ca
cmp byte [esp + 0x1c], 0
je 0x642c59
mov eax, dword [esp + 0x48]
call fcn.00641ea8
mov edi, eax
mov dword [esp + 0xc], 1
test edi, edi
je 0x642c4c
movsx eax, byte [edi]
mov byte [esp + 0xe8], al
inc edi
and eax, 0xc0
cmp eax, 0xc0
jne 0x642d90
mov edx, dword [esp + 0xc]
lea eax, [esp + edx + 0xe8]
jmp 0x642c2b
mov dl, byte [edi]
mov byte [eax], dl
inc edi
inc dword [esp + 0xc]
inc eax
cmp dword [esp + 0xc], 4
jge 0x642d90
movsx ecx, byte [edi]
and ecx, 0xc0
cmp ecx, 0x80
je 0x642c21
jmp 0x642d90
mov byte [esp + 0xe8], 0
jmp 0x642d90
add dword [esp + 4], 4
mov edi, dword [esp + 4]
mov eax, dword [edi - 4]
mov dword [esp + 0x90], eax
cmp dword [esp + 0x90], 0x80
jae 0x642c97
mov dl, byte [esp + 0x90]
and dl, 0xff
mov byte [esp + 0xe8], dl
mov dword [esp + 0xc], 1
jmp 0x642d90
cmp dword [esp + 0x90], 0x800
jae 0x642cda
mov ecx, dword [esp + 0x90]
shr ecx, 6
and cl, 0x1f
add cl, 0xc0
mov byte [esp + 0xe8], cl
mov al, byte [esp + 0x90]
and al, 0x3f
add al, 0x80
mov byte [esp + 0xe9], al
mov dword [esp + 0xc], 2
jmp 0x642d90
cmp dword [esp + 0x90], 0x10000
jae 0x642d31
mov edx, dword [esp + 0x90]
shr edx, 0xc
and dl, 0xf
add dl, 0xe0
mov byte [esp + 0xe8], dl
mov ecx, dword [esp + 0x90]
shr ecx, 6
and cl, 0x3f
add cl, 0x80
mov byte [esp + 0xe9], cl
mov al, byte [esp + 0x90]
and al, 0x3f
add al, 0x80
mov byte [esp + 0xea], al
mov dword [esp + 0xc], 3
jmp 0x642d90
mov edx, dword [esp + 0x90]
shr edx, 0x12
and dl, 7
add dl, 0xf0
mov byte [esp + 0xe8], dl
mov ecx, dword [esp + 0x90]
shr ecx, 0xc
and cl, 0x3f
add cl, 0x80
mov byte [esp + 0xe9], cl
mov eax, dword [esp + 0x90]
shr eax, 6
and al, 0x3f
add al, 0x80
mov byte [esp + 0xea], al
mov dl, byte [esp + 0x90]
and dl, 0x3f
add dl, 0x80
mov byte [esp + 0xeb], dl
mov dword [esp + 0xc], 4
cmp dword [esp + 8], 1
jle 0x642f0d
mov dword [esp + 0x94], 1
mov dword [esp + 0x98], 0
mov ecx, dword [esp + 8]
dec ecx
sub dword [esp + 0x10], ecx
cmp dword [esp + 0x10], 1
jle 0x642ddd
cmp byte [esp + 0x14], 0
jne 0x642ddd
mov edx, dword [esp + 0x10]
dec edx
mov cl, 0x20
mov eax, dword [esp]
call fcn.006437f0
xor edi, edi
mov dword [esp + 0x10], edi
lea edx, [esp + 0xe8]
mov ecx, dword [esp + 0xc]
mov eax, dword [esp]
call fcn.00643890
dec dword [esp + 8]
cmp dword [esp + 8], 1
jle 0x642f0d
mov eax, dword [esp + 8]
dec eax
cdq
cmp edx, dword [esp + 0x98]
jne 0x642e19
cmp eax, dword [esp + 0x94]
jae 0x642e2f
jmp 0x642e1b
jge 0x642e2f
mov eax, dword [esp + 8]
dec eax
cdq
mov dword [esp + 0x94], eax
mov dword [esp + 0x98], edx
push dword [esp + 0x98]
push dword [esp + 0x98]
mov eax, dword [esp + 0x14]
cdq
call fcn.005c8704
mov dword [esp + 0x9c], eax
mov dword [esp + 0xa0], edx
mov ecx, dword [esp]
mov eax, dword [ecx + 0x10]
xor edx, edx
add eax, dword [esp + 0x9c]
adc edx, dword [esp + 0xa0]
push edx
push eax
mov ecx, dword [esp + 8]
mov eax, dword [ecx + 8]
xor edx, edx
cmp edx, dword [esp + 4]
jne 0x642e85
cmp eax, dword [esp]
pop edx
pop eax
ja 0x642ea0
jmp 0x642e89
pop edx
pop eax
jg 0x642ea0
push dword [esp + 0xa0]
push dword [esp + 0xa0]
mov eax, dword [esp + 8]
call fcn.006436b8
mov edx, dword [esp]
cmp byte [edx + 0x14], 0
jne 0x642f0d
mov edx, dword [esp]
mov ebx, dword [esp]
mov eax, dword [esp + 0x9c]
mov ecx, dword [edx + 0x10]
sub ecx, eax
add ecx, dword [ebx + 4]
push ecx
mov eax, dword [esp + 0xa0]
mov ecx, eax
mov eax, dword [esp + 4]
pop edx
call fcn.00643890
mov eax, dword [esp + 0x94]
sub dword [esp + 8], eax
push 0
push 2
mov eax, dword [esp + 0x9c]
mov edx, dword [esp + 0xa0]
call fcn.005c8704
mov dword [esp + 0x94], eax
mov dword [esp + 0x98], edx
cmp dword [esp + 8], 1
jg 0x642dff
mov byte [esp + 0x17], 1
lea edi, [esp + 0xe8]
jmp 0x643071
cmp byte [esp + 0x1c], 0
je 0x642f37
mov eax, dword [esp + 0x48]
call fcn.00641ea8
mov byte [esp + 0x1b], 5
mov edi, eax
jmp 0x642f43
add dword [esp + 4], 4
mov eax, dword [esp + 4]
mov edi, dword [eax - 4]
test edi, edi
jne 0x642f4e
mov edi, 0x67e1d4
jmp 0x642fc2
xor eax, eax
mov al, byte [esp + 0x1b]
cmp eax, 6
jne 0x642fc2
mov edx, dword [esp]
cmp dword [edx + 0x10], 0
jne 0x642fbe
mov ecx, dword [esp]
cmp dword [ecx + 0xc], 0
je 0x642fbe
cmp dword [esp + 0x10], 0
jne 0x642fbe
cmp dword [esp + 8], 0
jge 0x642fbe
mov eax, dword [esp]
cmp byte [eax + 0x14], 0
jne 0x642fbe
mov edx, dword [esp]
mov dword [edx + 4], edi
mov edx, edi
mov ecx, dword [esp]
mov eax, dword [ecx]
call fcn.0064b48c
mov ecx, dword [esp]
mov dword [ecx + 8], eax
mov eax, edi
call fcn.005c83dc
and eax, 0x7fffffff
mov edx, dword [esp]
mov dword [edx + 0x10], eax
mov ecx, dword [esp]
or byte [ecx + 0x15], 4
xor eax, eax
mov dword [esp + 0xc], eax
jmp 0x6435ca
mov dword [esp + 0x3c], edi
cmp dword [esp + 8], 0
jl 0x643061
cmp byte [esp + 0x17], 0
je 0x643041
mov dword [esp + 0xa4], edi
jmp 0x643019
mov edx, dword [esp + 0xa4]
inc dword [esp + 0xa4]
xor ecx, ecx
mov cl, byte [edx]
cmp ecx, 0xc0
jl 0x643019
jmp 0x643000
inc dword [esp + 0xa4]
mov eax, dword [esp + 0xa4]
xor edx, edx
mov dl, byte [eax]
and edx, 0xc0
cmp edx, 0x80
je 0x642ff9
mov ecx, dword [esp + 8]
add dword [esp + 8], 0xffffffff
test ecx, ecx
jle 0x643032
mov eax, dword [esp + 0xa4]
cmp byte [eax], 0
jne 0x642fdd
mov edx, dword [esp + 0xa4]
sub edx, edi
mov dword [esp + 0xc], edx
jmp 0x643071
xor ecx, ecx
mov eax, edi
mov dword [esp + 0xc], ecx
jmp 0x643050
inc dword [esp + 0xc]
inc eax
mov edx, dword [esp + 0xc]
cmp edx, dword [esp + 8]
jge 0x643071
cmp byte [eax], 0
jne 0x64304b
jmp 0x643071
mov eax, edi
call fcn.005c83dc
and eax, 0x7fffffff
mov dword [esp + 0xc], eax
cmp byte [esp + 0x17], 0
je 0x6435ca
cmp dword [esp + 0x10], 0
jle 0x6435ca
mov edx, dword [esp + 0xc]
dec edx
mov dword [esp + 0xa8], edx
cmp dword [esp + 0xa8], 0
jl 0x6435ca
mov ecx, dword [esp + 0xa8]
add dword [esp + 0xa8], 0xffffffff
movsx eax, byte [edi + ecx]
and eax, 0xc0
cmp eax, 0x80
jne 0x6430c4
inc dword [esp + 0x10]
cmp dword [esp + 0xa8], 0
jge 0x6430a1
jmp 0x6435ca
xor edx, edx
mov dl, byte [esp + 0x1b]
cmp edx, 0xe
jne 0x6430e2
mov cl, 0x22
jmp 0x6430e4
mov cl, 0x27
mov byte [esp + 0xd4], cl
cmp byte [esp + 0x1c], 0
je 0x6430ff
mov eax, dword [esp + 0x48]
call fcn.00641ea8
mov ebx, eax
jmp 0x64310b
add dword [esp + 4], 4
mov eax, dword [esp + 4]
mov ebx, dword [eax - 4]
test ebx, ebx
sete al
and eax, 1
mov dword [esp + 0xd0], eax
cmp dword [esp + 0xd0], 0
je 0x64313b
xor edx, edx
mov dl, byte [esp + 0x1b]
cmp edx, 0xa
jne 0x643136
mov ebx, 0x67e1ec
jmp 0x64313b
mov ebx, str._NULL_
mov eax, dword [esp + 8]
cdq
mov dword [esp + 0xbc], eax
mov dword [esp + 0xc0], edx
xor eax, eax
xor edx, edx
mov dword [esp + 0xc4], eax
mov dword [esp + 0xc8], edx
mov dword [esp + 0xac], eax
mov dword [esp + 0xb0], edx
jmp 0x6431ed
cmp cl, byte [esp + 0xd4]
jne 0x643189
add dword [esp + 0xc4], 1
adc dword [esp + 0xc8], 0
cmp byte [esp + 0x17], 0
je 0x6431cd
movsx ecx, cl
and ecx, 0xc0
cmp ecx, 0xc0
jne 0x6431cd
jmp 0x6431b3
add dword [esp + 0xac], 1
adc dword [esp + 0xb0], 0
mov eax, dword [esp + 0xac]
movsx edx, byte [ebx + eax + 1]
and edx, 0xc0
cmp edx, 0x80
je 0x6431a3
add dword [esp + 0xac], 1
adc dword [esp + 0xb0], 0
sub dword [esp + 0xbc], 1
sbb dword [esp + 0xc0], 0
cmp dword [esp + 0xc0], 0
jne 0x6431ff
cmp dword [esp + 0xbc], 0
je 0x643213
mov eax, dword [esp + 0xac]
mov cl, byte [ebx + eax]
test cl, cl
jne 0x643170
cmp dword [esp + 0xd0], 0
jne 0x643228
xor edx, edx
mov dl, byte [esp + 0x1b]
cmp edx, 0xa
je 0x64322c
xor ecx, ecx
jmp 0x643231
mov ecx, 1
mov dword [esp + 0xcc], ecx
mov eax, dword [esp + 0xac]
mov edx, dword [esp + 0xb0]
add eax, 3
adc edx, 0
add dword [esp + 0xc4], eax
adc dword [esp + 0xc8], edx
cmp dword [esp + 0xc8], 0
jne 0x643270
cmp dword [esp + 0xc4], 0x46
jbe 0x643299
jmp 0x643272
jle 0x643299
push dword [esp + 0xc8]
push dword [esp + 0xc8]
mov eax, dword [esp + 8]
call fcn.00641ec8
mov dword [esp + 0x3c], eax
mov edi, eax
test edi, edi
je case.default.0x642283
jmp 0x6432a0
lea edi, [esp + 0xe8]
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb8], 0
cmp dword [esp + 0xcc], 0
je 0x6432e1
mov eax, dword [esp + 0xb4]
mov dl, byte [esp + 0xd4]
mov byte [edi + eax], dl
add dword [esp + 0xb4], 1
adc dword [esp + 0xb8], 0
mov ecx, dword [esp + 0xac]
mov dword [esp + 0xbc], ecx
mov ecx, dword [esp + 0xb0]
mov dword [esp + 0xc0], ecx
mov dword [esp + 0xac], 0
mov dword [esp + 0xb0], 0
jmp 0x64336c
mov eax, dword [esp + 0xac]
mov cl, byte [ebx + eax]
mov eax, dword [esp + 0xb4]
mov byte [edi + eax], cl
add dword [esp + 0xb4], 1
adc dword [esp + 0xb8], 0
cmp cl, byte [esp + 0xd4]
jne 0x64335c
mov eax, dword [esp + 0xb4]
mov byte [edi + eax], cl
add dword [esp + 0xb4], 1
adc dword [esp + 0xb8], 0
add dword [esp + 0xac], 1
adc dword [esp + 0xb0], 0
mov eax, dword [esp + 0xac]
mov edx, dword [esp + 0xb0]
cmp edx, dword [esp + 0xc0]
jne 0x64338e
cmp eax, dword [esp + 0xbc]
jb 0x643315
jmp 0x643390
jl 0x643315
cmp dword [esp + 0xcc], 0
je 0x6433bb
mov eax, dword [esp + 0xb4]
mov dl, byte [esp + 0xd4]
mov byte [edi + eax], dl
add dword [esp + 0xb4], 1
adc dword [esp + 0xb8], 0
mov eax, dword [esp + 0xb4]
mov byte [edi + eax], 0
mov eax, dword [esp + 0xb4]
mov dword [esp + 0xc], eax
jmp 0x643071
mov edx, dword [esp]
test byte [edx + 0x15], 1
je case.default.0x642283
cmp byte [esp + 0x16], 0
je 0x64343d
add dword [esp + 4], 4
mov ecx, dword [esp + 4]
mov eax, dword [ecx - 4]
mov dword [esp + 0xd8], eax
cmp dword [esp + 0xd8], 0
je 0x643495
mov edx, dword [esp + 0xd8]
test byte [edx + 5], 8
jne 0x643495
mov ecx, dword [esp + 0xd8]
mov eax, dword [esp]
mov edx, dword [ecx + 8]
call fcn.006438c4
mov ecx, dword [esp]
mov edx, dword [esp + 0xd8]
mov eax, dword [ecx]
call fcn.00643698
jmp 0x643495
add dword [esp + 4], 4
mov ecx, dword [esp + 4]
mov eax, dword [ecx - 4]
mov dword [esp + 0xdc], eax
cmp dword [esp + 0xdc], 0
je 0x643495
mov edx, dword [esp + 0xdc]
cmp dword [edx + 4], 0
je 0x643495
mov eax, dword [esp + 0xdc]
mov ecx, dword [esp + 0xdc]
mov edx, dword [eax]
mov eax, dword [esp]
mov ecx, dword [ecx + 4]
call fcn.00643890
mov edx, dword [esp + 0xdc]
mov eax, dword [esp]
mov eax, dword [eax]
mov edx, dword [edx]
call fcn.00643654
xor edx, edx
mov dword [esp + 0x10], edx
mov dword [esp + 0xc], edx
jmp 0x6435ca
mov eax, dword [esp]
test byte [eax + 0x15], 1
je case.default.0x642283
add dword [esp + 4], 4
mov ecx, dword [esp + 4]
mov eax, dword [ecx - 4]
mov dword [esp + 0xe0], eax
mov edx, dword [esp + 0xe0]
cmp dword [edx + 0xc], 0
je 0x6434ef
cmp byte [esp + 0x17], 0
jne 0x6434ef
mov ecx, dword [esp + 0xe0]
mov eax, dword [esp]
mov edx, dword [ecx + 0xc]
call fcn.006438c4
jmp 0x6435bc
mov ecx, dword [esp + 0xe0]
cmp dword [ecx + 8], 0
je 0x643541
mov eax, dword [esp + 0xe0]
cmp dword [eax + 4], 0
je 0x64352d
mov edx, dword [esp + 0xe0]
mov eax, dword [esp]
mov edx, dword [edx + 4]
call fcn.006438c4
mov edx, 0x67e1f8
mov ecx, 1
mov eax, dword [esp]
call fcn.00643890
mov eax, dword [esp + 0xe0]
mov edx, dword [eax + 8]
mov eax, dword [esp]
call fcn.006438c4
jmp 0x6435bc
mov edx, dword [esp + 0xe0]
cmp dword [edx + 0xc], 0
je 0x643562
mov ecx, dword [esp + 0xe0]
mov eax, dword [esp]
mov edx, dword [ecx + 0xc]
call fcn.006438c4
jmp 0x6435bc
mov ecx, dword [esp + 0xe0]
mov eax, dword [ecx + 0x14]
mov dword [esp + 0xe4], eax
mov edx, dword [esp + 0xe4]
test byte [edx + 5], 8
je 0x64359f
mov ecx, dword [esp + 0xe4]
mov eax, dword [ecx + 0x10]
push eax
push str._join__u_
mov edx, dword [esp + 8]
push edx
call fcn.00643c58
add esp, 0xc
jmp 0x6435bc
mov ecx, dword [esp + 0xe4]
mov eax, dword [ecx + 0x10]
push eax
push str._subquery__u_
mov edx, dword [esp + 8]
push edx
call fcn.00643c58
add esp, 0xc
xor ecx, ecx
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], ecx
jmp 0x6435ca
mov eax, dword [esp + 0xc]
sub dword [esp + 0x10], eax
cmp dword [esp + 0x10], 0
jle 0x643613
cmp byte [esp + 0x14], 0
jne 0x6435ee
mov cl, 0x20
mov edx, dword [esp + 0x10]
mov eax, dword [esp]
call fcn.006437f0
mov ecx, dword [esp + 0xc]
mov edx, edi
mov eax, dword [esp]
call fcn.00643890
cmp byte [esp + 0x14], 0
je 0x643621
mov cl, 0x20
mov edx, dword [esp + 0x10]
mov eax, dword [esp]
call fcn.006437f0
jmp 0x643621
mov ecx, dword [esp + 0xc]
mov edx, edi
mov eax, dword [esp]
call fcn.00643890
cmp dword [esp + 0x3c], 0
je 0x64363c
mov eax, dword [esp]
mov edx, dword [esp + 0x3c]
mov eax, dword [eax]
call fcn.0064b5f4
xor ecx, ecx
mov dword [esp + 0x3c], ecx
inc esi
movsx eax, byte [esi]
test eax, eax
jne 0x641f7e
add esp, 0x158
pop ebp
pop edi
pop esi
pop ebx
ret