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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x1ec
mov esi, dword [esp + 0x204]
mov ecx, dword [esp + 0x200]
test esi, esi
sete al
test ecx, ecx
sete dl
or eax, edx
test al, 1
je 0x658e8b5c
mov esi, 1
lea ecx, [esp + 0xd0]
mov dword [esp + 0x1d0], ecx
lea eax, [esp + 0xd0]
mov edx, dword [esp + 0x208]
mov dword [esp + 0x1d4], eax
lea eax, [ecx + esi - 1]
mov ecx, dword [esp + 0x20c]
mov dword [esp + 0x1d8], eax
xor eax, eax
lea ebp, [esp + 0xd0]
mov dword [esp + 0x78], eax
xor eax, eax
mov dword [esp + 0x7c], eax
xor eax, eax
mov dword [esp + 0x70], eax
xor eax, eax
mov dword [esp + 0x74], eax
xor eax, eax
mov dword [esp + 0x5c], eax
xor eax, eax
mov dword [esp + 0x90], edx
mov dword [esp + 0x8c], ecx
mov dword [esp + 0xac], eax
nop
mov ebx, dword [esp + 0x90]
movsx esi, byte [ebx]
inc ebx
mov dword [esp + 0x90], ebx
test esi, esi
je 0x658e8c23
cmp esi, 0x25
je 0x658e8c80
mov eax, esi
lea edx, [esp + 0x1d0]
mov byte [ebp], al
inc ebp
cmp ebp, edx
jne 0x658e8bc8
mov dword [esp], edx
lea eax, [esp + 0xac]
mov dword [esp + 4], eax
call fcn.658e8aa8
mov ebx, dword [esp + 0x90]
mov ebp, eax
movsx esi, byte [ebx]
inc ebx
mov dword [esp + 0x90], ebx
test esi, esi
jne 0x658e8bde
mov byte [ebp], 0
lea edx, [esp + 0xd0]
mov eax, ebp
sub eax, edx
mov ecx, dword [esp + 0x1d0]
mov ebx, eax
mov dword [esp + 0x1dc], eax
mov eax, dword [esp + 0x1d8]
mov edi, dword [esp + 0xac]
mov edx, dword [esp + 0x1dc]
sub eax, ecx
add ebx, edi
cmp edx, eax
jbe 0x658e8c68
mov dword [esp + 0x1dc], eax
mov edx, eax
test edx, edx
jne 0x658e8d2f
mov byte [ecx], 0
add esp, 0x1ec
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret
xor edi, edi
xor eax, eax
xor ecx, ecx
mov dword [esp + 0x3c], edi
mov edi, dword [esp + 0x90]
xor edx, edx
mov dword [esp + 0x50], eax
xor esi, esi
xor eax, eax
mov dword [esp + 0x48], ecx
xor ebx, ebx
xor ecx, ecx
mov dword [esp + 0x4c], edx
xor edx, edx
mov dword [esp + 0x40], esi
mov dword [esp + 0x44], ebx
mov dword [esp + 0x58], eax
movzx eax, byte [edi]
inc dword [esp + 0x90]
movsx eax, al
mov dword [esp + 0x54], eax
sub eax, 0x20
cmp eax, 0x58
jbe switch.0x658e8d28
mov byte [ebp], 0x25
lea esi, [esp + 0x1d0]
inc ebp
cmp ebp, esi
je 0x658e8e46
cmp edi, dword [esp + 0x90]
jae 0x658e8bc8
lea ebx, [esp + 0xac]
jmp 0x658e8d05
cmp edi, dword [esp + 0x90]
jae 0x658e8bc8
movzx eax, byte [edi]
inc edi
mov byte [ebp], al
inc ebp
lea eax, [esp + 0x1d0]
cmp ebp, eax
jne 0x658e8cf8
mov dword [esp + 4], ebx
mov dword [esp], eax
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e8cf8
jmp dword [eax*4 + 0x65936d34]
mov dword [esp], ecx
lea esi, [esp + 0xd0]
mov dword [esp + 4], esi
mov dword [esp + 8], edx
call sub.msvcrt.dll_memcpy
mov esi, dword [esp + 0x1d0]
mov eax, ebx
mov ecx, dword [esp + 0x1dc]
add ecx, esi
mov dword [esp + 0x1d0], ecx
mov byte [ecx], 0
add esp, 0x1ec
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, 1
mov edx, 1
mov dword [esp + 0x58], eax
mov eax, str.0123456789abcdef
mov dword [esp + 0x88], eax
mov ebx, dword [esp + 0x58]
xor esi, esi
mov dword [esp + 0x40], esi
test ebx, ebx
je 0x658e8da6
mov eax, dword [esp + 0x54]
mov ecx, 2
mov dword [esp + 0x58], ecx
mov dword [esp + 0x40], eax
mov ebx, 0x10
cmp edx, 1
je 0x658e8e60
jb 0x658e8e60
cmp edx, 2
je 0x658e9ad2
cmp edx, 3
jne 0x658e8e7b
mov eax, dword [esp + 0x8c]
add dword [esp + 0x8c], 8
mov edx, dword [eax]
mov ecx, dword [eax + 4]
jmp 0x658e8e73
mov esi, dword [esp + 0x90]
mov ebx, dword [esp + 0x54]
movzx eax, byte [esi]
sub ebx, 0x30
movsx esi, al
cmp esi, 0x2f
jle 0x658e8e23
cmp esi, 0x39
jg 0x658e8e23
inc dword [esp + 0x90]
lea eax, [ebx + ebx*4]
lea ebx, [esi + eax*2 - 0x30]
mov esi, dword [esp + 0x90]
movzx eax, byte [esi]
movsx esi, al
cmp esi, 0x2f
jg 0x658e8dfe
test ecx, ecx
je 0x658e9d7a
mov dword [esp + 0x48], ebx
mov esi, dword [esp + 0x44]
test esi, esi
je 0x658e8cb8
neg ebx
mov dword [esp + 0x48], ebx
jmp 0x658e8cb8
mov dword [esp], esi
lea eax, [esp + 0xac]
mov dword [esp + 4], eax
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e8ce2
mov eax, dword [esp + 0x8c]
xor ecx, ecx
add dword [esp + 0x8c], 4
mov edx, dword [eax]
mov dword [esp + 0x70], edx
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x74]
or ecx, dword [esp + 0x70]
jne 0x658e8e91
xor eax, eax
mov dword [esp + 0x58], eax
xor eax, eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x30], ebx
mov ecx, dword [esp + 0x74]
mov esi, ebx
or ecx, dword [esp + 0x70]
lea edx, [esp + 0xb0]
mov dword [esp + 0x84], edx
setne al
movzx eax, al
neg eax
sar esi, 0x1f
and dword [esp + 0x58], eax
mov dword [esp + 0x34], esi
nop
lea esi, [esi]
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x74]
mov eax, dword [esp + 0x30]
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x70]
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
mov dword [esp], edx
call fcn.658e83d0
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x30]
mov ebx, dword [esp + 0x88]
mov dword [esp + 0x2c], edx
mul dword [esp + 0x28]
mov edx, dword [esp + 0x70]
mov esi, dword [esp + 0x84]
mov ecx, eax
sub edx, ecx
movzx ecx, byte [ebx + edx]
mov byte [esi], cl
mov eax, dword [esp + 0x28]
inc esi
mov dword [esp + 0x84], esi
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], edx
or edx, eax
jne 0x658e8ec8
mov ecx, dword [esp + 0x58]
lea edx, [esp + 0xb0]
sub esi, edx
sub dword [esp + 0x48], esi
test ecx, ecx
setne al
xor edx, edx
cmp dword [esp + 0x54], 0x6f
sete dl
test eax, edx
je 0x658e8f64
mov edx, dword [esp + 0x48]
test edx, edx
jle 0x658e9e5e
sub dword [esp + 0x3c], esi
mov eax, dword [esp + 0x3c]
test eax, eax
jle 0x658e8f98
mov eax, dword [esp + 0x48]
test eax, eax
jle 0x658e8f80
mov ecx, dword [esp + 0x48]
sub dword [esp + 0x3c], ecx
cmp dword [esp + 0x40], 1
adc dword [esp + 0x3c], 0xffffffff
xor eax, eax
cmp dword [esp + 0x58], 2
sete al
sub dword [esp + 0x3c], eax
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x658e9079
cmp dword [esp + 0x58], 2
je 0x658e9d32
mov eax, dword [esp + 0x40]
test eax, eax
je 0x658e8fcf
movzx eax, byte [esp + 0x40]
lea edx, [esp + 0x1d0]
mov byte [ebp], al
inc ebp
cmp ebp, edx
je 0x658ea184
dec dword [esp + 0x48]
js 0x658e9008
lea ebx, [esp + 0xac]
lea esi, [esi]
lea edi, [edi]
mov byte [ebp], 0x30
lea ecx, [esp + 0x1d0]
inc ebp
cmp ebp, ecx
je 0x658e9b32
dec dword [esp + 0x48]
jns 0x658e8fe8
lea esi, [esi]
dec dword [esp + 0x84]
lea esi, [esp + 0x1d0]
mov ebx, dword [esp + 0x84]
movzx eax, byte [ebx]
mov byte [ebp], al
inc ebp
cmp ebp, esi
je 0x658e9b18
lea eax, [esp + 0xb0]
cmp eax, dword [esp + 0x84]
jb 0x658e9008
dec dword [esp + 0x3c]
js 0x658e8bc8
lea ebx, [esp + 0xac]
jmp 0x658e9059
dec dword [esp + 0x3c]
js 0x658e8bc8
mov byte [ebp], 0x20
lea edx, [esp + 0x1d0]
inc ebp
cmp ebp, edx
jne 0x658e904f
mov dword [esp + 4], ebx
mov dword [esp], edx
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e904f
mov eax, dword [esp + 0x3c]
test eax, eax
jle 0x658e90b4
mov edi, dword [esp + 0x50]
test edi, edi
jne 0x658e9da9
dec dword [esp + 0x3c]
js 0x658e90b4
lea ebx, [esp + 0xac]
mov byte [ebp], 0x20
lea edx, [esp + 0x1d0]
inc ebp
cmp ebp, edx
je 0x658e9c40
dec dword [esp + 0x3c]
jns 0x658e909a
cmp dword [esp + 0x58], 2
je 0x658e9e11
mov ebx, dword [esp + 0x40]
test ebx, ebx
je 0x658e90df
movzx ebx, byte [esp + 0x40]
lea esi, [esp + 0x1d0]
mov byte [ebp], bl
inc ebp
cmp ebp, esi
je 0x658ea1d9
dec dword [esp + 0x48]
js 0x658e914c
lea ebx, [esp + 0xac]
mov byte [ebp], 0x30
inc ebp
lea eax, [esp + 0x1d0]
jmp 0x658e9106
mov byte [ebp], 0x30
lea eax, [esp + 0x1d0]
inc ebp
cmp ebp, eax
je 0x658e9b45
dec dword [esp + 0x48]
jns 0x658e90fa
dec dword [esp + 0x84]
lea ecx, [esp + 0x1d0]
mov edx, dword [esp + 0x84]
movzx eax, byte [edx]
mov byte [ebp], al
inc ebp
cmp ebp, ecx
je 0x658e916c
lea esi, [esi]
lea ebx, [esp + 0xb0]
cmp ebx, dword [esp + 0x84]
jae 0x658e8bc8
dec dword [esp + 0x84]
lea ecx, [esp + 0x1d0]
mov edx, dword [esp + 0x84]
movzx eax, byte [edx]
mov byte [ebp], al
inc ebp
cmp ebp, ecx
jne 0x658e9138
mov dword [esp], ecx
lea eax, [esp + 0xac]
mov dword [esp + 4], eax
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e9138
mov esi, dword [esp + 0x50]
or esi, ecx
jne case.0x658e8d28.49
mov eax, 1
mov dword [esp + 0x50], eax
mov ebx, dword [esp + 0x90]
movzx eax, byte [ebx]
jmp 0x658e8cb8
test ecx, ecx
je 0x658e9ed9
mov eax, 1
mov dword [esp + 0x44], eax
jmp 0x658e9198
xor eax, eax
mov ecx, 1
mov dword [esp + 0x50], eax
mov esi, dword [esp + 0x90]
movzx eax, byte [esi]
jmp 0x658e8cb8
mov eax, 1
mov dword [esp + 0x58], eax
jmp 0x658e9198
movzx ecx, byte [esp + 0x54]
lea ebx, [esp + 0x1d0]
mov byte [ebp], cl
inc ebp
cmp ebp, ebx
jne 0x658e8bc8
mov dword [esp], ebx
jmp 0x658e8bfb
mov eax, dword [esp + 0x8c]
add dword [esp + 0x8c], 4
test ecx, ecx
mov ebx, dword [eax]
je 0x658e9ee7
mov dword [esp + 0x48], ebx
jmp 0x658e9198
mov ebx, dword [esp + 0x54]
mov dword [esp + 0x40], ebx
jmp 0x658e91c5
mov esi, dword [esp + 0x90]
movzx eax, byte [esi]
cmp al, 0x33
je 0x658e9ffd
cmp al, 0x36
je 0x658e9af3
mov edx, 1
jmp 0x658e8cb8
inc dword [esp + 0x5c]
jmp 0x658e9198
mov edi, str.0123456789ABCDEF
mov dword [esp + 0x88], edi
jmp 0x658e8d87
mov eax, dword [esp + 0x8c]
add dword [esp + 0x8c], 4
mov esi, dword [eax]
jmp 0x658e8be7
test ecx, ecx
jne 0x658e928c
mov eax, 6
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x658e9ec3
mov eax, dword [esp + 0x8c]
add dword [esp + 0x8c], 0xc
fld xword [eax]
fstp xword [esp + 0x60]
fld xword [esp + 0x60]
mov eax, dword [esp + 0x48]
not eax
fstp xword [esp]
sar eax, 0x1f
and dword [esp + 0x48], eax
lea eax, [esp + 0x9c]
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x98]
mov dword [esp + 0x18], eax
lea eax, [esp + 0x94]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x48]
inc eax
cmp dword [esp + 0x48], 1
mov dword [esp + 0x10], eax
sbb eax, eax
not eax
and eax, 2
mov dword [esp + 0xc], eax
call fcn.658e89b8
mov dword [esp + 0x80], eax
mov ecx, dword [esp + 0x94]
mov dword [esp + 0x84], eax
cmp ecx, 0xffff8000
je 0x658e9e6c
mov eax, dword [esp + 0x98]
test eax, eax
je 0x658e9357
fld xword [esp + 0x60]
fldz
fucompp
fnstsw ax
sahf
setp al
setne dl
or dl, al
mov eax, dword [esp + 0x40]
test eax, eax
setne al
or eax, edx
test al, 1
je 0x658e9357
mov eax, 0x2d
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x3c]
mov edi, dword [esp + 0x48]
sub eax, edi
lea edx, [eax - 5]
test edx, edx
mov dword [esp + 0x3c], edx
jle 0x658e938d
mov esi, dword [esp + 0x40]
test esi, esi
je 0x658e937b
sub eax, 6
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x48]
mov ebx, dword [esp + 0x58]
or eax, ebx
cmp eax, 1
adc dword [esp + 0x3c], 0xffffffff
lea eax, [ecx - 1]
mov esi, eax
mov dword [esp + 0x94], eax
sar eax, 0x1f
xor esi, eax
sub esi, eax
cmp esi, 0x63
jle 0x658e93c3
mov ecx, 0x66666667
dec dword [esp + 0x3c]
mov eax, esi
imul ecx
mov eax, esi
sar eax, 0x1f
sar edx, 2
mov esi, edx
sub esi, eax
cmp esi, 0x63
jg 0x658e93aa
mov edx, dword [esp + 0x3c]
test edx, edx
setg al
xor edx, edx
cmp dword [esp + 0x4c], 0
sete dl
test eax, edx
je 0x658e9a94
mov eax, dword [esp + 0x50]
lea ebx, [esp + 0xac]
test eax, eax
je 0x658e9a74
mov eax, dword [esp + 0x40]
test eax, eax
je 0x658e9411
movzx edx, byte [esp + 0x40]
lea ecx, [esp + 0x1d0]
mov byte [ebp], dl
inc ebp
cmp ebp, ecx
je 0x658ea2a4
lea ebx, [esp + 0xac]
mov byte [ebp], 0x30
lea esi, [esp + 0x1d0]
inc ebp
cmp ebp, esi
je 0x658e9fa7
dec dword [esp + 0x3c]
mov eax, dword [esp + 0x3c]
test eax, eax
jg 0x658e9418
mov ebx, dword [esp + 0x80]
lea esi, [esp + 0x1d0]
movzx eax, byte [ebx]
inc ebx
mov dword [esp + 0x84], ebx
mov byte [ebp], al
inc ebp
cmp ebp, esi
je 0x658ea19e
mov eax, dword [esp + 0x48]
or eax, dword [esp + 0x58]
je 0x658e9496
mov byte [ebp], 0x2e
lea edx, [esp + 0x1d0]
inc ebp
cmp ebp, edx
jne 0x658e9496
jmp 0x658ea27a
mov esi, 0x30
mov ebx, esi
lea esi, [esp + 0x1d0]
mov byte [ebp], bl
inc ebp
cmp ebp, esi
je 0x658e9c63
dec dword [esp + 0x48]
js 0x658e9b58
mov ecx, dword [esp + 0x84]
movsx esi, byte [ecx]
test esi, esi
je 0x658e947c
inc ecx
mov dword [esp + 0x84], ecx
jmp 0x658e9481
test ecx, ecx
jne 0x658e94c5
mov esi, 6
mov dword [esp + 0x48], esi
mov ebx, dword [esp + 0x5c]
test ebx, ebx
je 0x658e9ead
mov eax, dword [esp + 0x8c]
add dword [esp + 0x8c], 0xc
fld xword [eax]
fstp xword [esp + 0x60]
fld xword [esp + 0x60]
mov ecx, 3
lea eax, [esp + 0x9c]
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x98]
mov dword [esp + 0x18], eax
lea eax, [esp + 0x94]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0xc], ecx
fstp xword [esp]
mov dword [esp + 0x10], eax
call fcn.658e89b8
cmp dword [esp + 0x94], 0xffff8000
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], eax
je 0x658e9e6c
mov eax, dword [esp + 0x98]
test eax, eax
je 0x658e9579
fld xword [esp + 0x60]
fldz
fucompp
fnstsw ax
sahf
setp al
setne dl
or dl, al
mov eax, dword [esp + 0x40]
test eax, eax
setne al
or eax, edx
test al, 1
je 0x658e9579
mov eax, 0x2d
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x48]
test eax, eax
jle 0x658e9589
mov eax, dword [esp + 0x48]
sub dword [esp + 0x3c], eax
mov eax, dword [esp + 0x3c]
test eax, eax
jle 0x658e95e1
cmp dword [esp + 0x40], 1
mov ecx, dword [esp + 0x94]
adc dword [esp + 0x3c], 0xffffffff
test ecx, ecx
jle 0x658ea0d5
mov edx, dword [esp + 0x80]
cmp edx, dword [esp + 0x9c]
je 0x658ea154
sub dword [esp + 0x3c], ecx
mov ebx, dword [esp + 0x48]
mov ecx, dword [esp + 0x58]
test ebx, ebx
setg dl
test ecx, ecx
setne al
or eax, edx
and eax, 1
cmp eax, 1
adc dword [esp + 0x3c], 0xffffffff
mov edx, dword [esp + 0x3c]
test edx, edx
setg al
xor edx, edx
cmp dword [esp + 0x4c], 0
sete dl
test eax, edx
je 0x658e96d1
mov eax, dword [esp + 0x50]
lea ebx, [esp + 0xac]
test eax, eax
je 0x658e96b1
mov eax, dword [esp + 0x40]
test eax, eax
je 0x658e962f
movzx ecx, byte [esp + 0x40]
lea ebx, [esp + 0x1d0]
mov byte [ebp], cl
inc ebp
cmp ebp, ebx
je 0x658ea2eb
lea ebx, [esp + 0xac]
mov byte [ebp], 0x30
lea esi, [esp + 0x1d0]
inc ebp
cmp ebp, esi
je 0x658ea0ba
dec dword [esp + 0x3c]
mov eax, dword [esp + 0x3c]
test eax, eax
jg 0x658e9636
mov eax, dword [esp + 0x94]
test eax, eax
jg 0x658e9699
jmp 0x658ea014
mov esi, 0x30
mov ecx, esi
lea ebx, [esp + 0x1d0]
mov byte [ebp], cl
inc ebp
cmp ebp, ebx
je 0x658e9d60
mov eax, dword [esp + 0x94]
dec eax
test eax, eax
mov dword [esp + 0x94], eax
jle 0x658e9c7d
mov edx, dword [esp + 0x84]
movsx esi, byte [edx]
test esi, esi
je 0x658e9668
inc edx
mov dword [esp + 0x84], edx
jmp 0x658e966d
mov byte [ebp], 0x20
lea eax, [esp + 0x1d0]
inc ebp
cmp ebp, eax
je 0x658ea0a7
dec dword [esp + 0x3c]
mov eax, dword [esp + 0x3c]
test eax, eax
jg 0x658e96b1
mov eax, dword [esp + 0x40]
test eax, eax
je 0x658e9656
movzx edx, byte [esp + 0x40]
lea ecx, [esp + 0x1d0]
mov byte [ebp], dl
inc ebp
cmp ebp, ecx
jne 0x658e9656
mov dword [esp], ecx
lea eax, [esp + 0xac]
mov dword [esp + 4], eax
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e9656
mov eax, dword [esp + 0x8c]
add dword [esp + 0x8c], 4
mov eax, dword [eax]
test eax, eax
jne 0x658e972b
lea eax, [esp + 0xa0]
lea ecx, [esp + 0xd0]
mov esi, ebp
sub esi, ecx
mov ecx, dword [esp + 0xac]
add esi, ecx
cmp edx, 1
je 0x658e9e57
jb 0x658e9e57
cmp edx, 2
je 0x658ea22d
cmp edx, 3
jne 0x658e8bc8
mov dword [eax], esi
mov ebx, esi
sar ebx, 0x1f
mov dword [eax + 4], ebx
jmp 0x658e8bc8
test ecx, ecx
jne 0x658e977c
mov eax, 6
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x658e9f08
mov eax, dword [esp + 0x8c]
add dword [esp + 0x8c], 0xc
fld xword [eax]
fstp xword [esp + 0x60]
fld xword [esp + 0x60]
mov eax, dword [esp + 0x48]
not eax
fstp xword [esp]
sar eax, 0x1f
and dword [esp + 0x48], eax
lea eax, [esp + 0x9c]
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x98]
mov dword [esp + 0x18], eax
lea eax, [esp + 0x94]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x48]
cmp eax, 1
mov dword [esp + 0x10], eax
sbb eax, eax
not eax
and eax, 2
mov dword [esp + 0xc], eax
call fcn.658e89b8
mov dword [esp + 0x80], eax
mov ecx, dword [esp + 0x94]
mov dword [esp + 0x84], eax
cmp ecx, 0xffff8000
je 0x658e9e6c
mov esi, dword [esp + 0x9c]
sub esi, eax
mov eax, dword [esp + 0x48]
test eax, eax
jne 0x658e9847
mov dword [esp + 0x48], esi
mov eax, dword [esp + 0x80]
mov edi, dword [esp + 0x58]
cmp byte [eax + 1], 0
setne al
test edi, edi
setne dl
or eax, edx
test al, 1
je 0x658ea0cd
lea eax, [esi + 5]
cmp ecx, 0xfffffffc
jle 0x658e9854
cmp ecx, eax
jle 0x658ea11c
sub dword [esp + 0x54], 2
mov eax, dword [esp + 0x58]
test eax, eax
sete al
xor edx, edx
cmp dword [esp + 0x48], esi
setg dl
test eax, edx
je 0x658e9873
mov dword [esp + 0x48], esi
dec dword [esp + 0x48]
jmp 0x658e9321
mov edx, 2
jmp 0x658e9198
cmp edx, 1
je 0x658e9fdd
jb 0x658e9f54
cmp edx, 2
je 0x658ea1b8
cmp edx, 3
je 0x658ea261
xor eax, eax
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x78]
mov esi, str.0123456789abcdef
mov ebx, 0xa
mov dword [esp + 0x88], esi
mov edx, dword [esp + 0x7c]
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], edx
jmp 0x658e8e91
cmp edx, 1
je 0x658e9fba
jb 0x658e9f31
cmp edx, 2
je 0x658ea20d
cmp edx, 3
je 0x658ea240
mov eax, dword [esp + 0x7c]
test eax, eax
jns 0x658e98ad
neg dword [esp + 0x78]
mov edi, 0x2d
mov dword [esp + 0x40], edi
adc dword [esp + 0x7c], 0
neg dword [esp + 0x7c]
jmp 0x658e98ad
mov esi, dword [esp + 0x90]
mov edx, 1
movzx eax, byte [esi]
cmp al, 0x6c
jne 0x658e8cb8
inc esi
mov edx, 3
mov dword [esp + 0x90], esi
movzx eax, byte [esi]
jmp 0x658e8cb8
xor eax, eax
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x8c]
add dword [esp + 0x8c], 4
mov eax, dword [eax]
test eax, eax
mov dword [esp + 0x84], eax
je 0x658ea143
mov eax, dword [esp + 0x48]
not eax
sar eax, 0x1f
and dword [esp + 0x48], eax
test ecx, ecx
je 0x658e9e3f
mov ebx, dword [esp + 0x48]
xor esi, esi
cmp dword [esp + 0x80], ebx
jge 0x658e99a1
mov eax, dword [esp + 0x84]
cmp byte [esi + eax], 0
je 0x658e99a1
inc esi
cmp esi, dword [esp + 0x48]
jl 0x658e998d
mov dword [esp + 0x48], esi
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x48]
sub dword [esp + 0x3c], ecx
test eax, eax
jne 0x658e99dc
dec dword [esp + 0x3c]
js 0x658e99dc
lea ebx, [esp + 0xac]
mov byte [ebp], 0x20
lea esi, [esp + 0x1d0]
inc ebp
cmp ebp, esi
je 0x658e9f1e
dec dword [esp + 0x3c]
jns 0x658e99c2
dec dword [esp + 0x48]
js 0x658e9a14
lea ebx, [esp + 0xac]
mov edx, dword [esp + 0x84]
lea ecx, [esp + 0x1d0]
movzx eax, byte [edx]
inc edx
mov dword [esp + 0x84], edx
mov byte [ebp], al
inc ebp
cmp ebp, ecx
je 0x658e9d83
dec dword [esp + 0x48]
jns 0x658e99e9
dec dword [esp + 0x3c]
js 0x658e9a3b
lea ebx, [esp + 0xac]
mov byte [ebp], 0x20
lea esi, [esp + 0x1d0]
inc ebp
cmp ebp, esi
je 0x658e9d96
dec dword [esp + 0x3c]
jns 0x658e9a21
mov edi, dword [esp + 0x80]
test edi, edi
je 0x658e8bc8
mov eax, dword [esp + 0x80]
mov dword [esp], eax
call fcn.658ec3b8
jmp 0x658e8bc8
mov eax, str.0123456789abcdef
mov ebx, 8
mov dword [esp + 0x88], eax
jmp 0x658e8dab
mov byte [ebp], 0x20
lea eax, [esp + 0x1d0]
inc ebp
cmp ebp, eax
je 0x658e9f74
dec dword [esp + 0x3c]
mov eax, dword [esp + 0x3c]
test eax, eax
jg 0x658e9a74
mov eax, dword [esp + 0x40]
test eax, eax
je 0x658e9438
movzx edx, byte [esp + 0x40]
lea ecx, [esp + 0x1d0]
mov byte [ebp], dl
inc ebp
cmp ebp, ecx
jne 0x658e9438
mov dword [esp], ecx
lea eax, [esp + 0xac]
mov dword [esp + 4], eax
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e9438
mov eax, dword [esp + 0x8c]
xor edx, edx
add dword [esp + 0x8c], 4
mov dword [esp + 0x74], edx
movzx eax, word [eax]
mov dword [esp + 0x70], eax
jmp 0x658e8e7b
mov edx, dword [esp + 0x90]
cmp byte [edx + 1], 0x34
jne 0x658e9245
add edx, 2
mov dword [esp + 0x90], edx
mov edx, 3
jmp 0x658e9198
mov dword [esp], esi
lea eax, [esp + 0xac]
mov dword [esp + 4], eax
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e902c
mov dword [esp + 4], ebx
mov dword [esp], ecx
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e8ffc
mov dword [esp + 4], ebx
mov dword [esp], eax
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e910e
movzx eax, byte [esp + 0x54]
lea edx, [esp + 0x1d0]
mov byte [ebp], al
inc ebp
cmp ebp, edx
je 0x658ea16a
mov eax, dword [esp + 0x94]
test eax, eax
js 0x658e9f87
mov byte [ebp], 0x2b
lea ebx, [esp + 0x1d0]
inc ebp
cmp ebp, ebx
je 0x658ea1f3
mov ecx, dword [esp + 0x94]
mov esi, 2
mov ebx, 0xa
cmp ecx, 0x63
jle 0x658e9bd5
lea eax, [ebx + ebx*4]
inc esi
lea ebx, [eax + eax]
lea eax, [ebx + eax*8]
add eax, eax
cmp eax, ecx
jle 0x658e9ba9
jmp 0x658e9bd5
imul edi, ebx
mov eax, dword [esp + 0x94]
sub eax, edi
lea eax, [eax + eax*4]
add eax, eax
mov ecx, eax
mov dword [esp + 0x94], eax
mov eax, ecx
cdq
idiv ebx
mov edi, eax
add al, 0x30
mov byte [ebp], al
lea edx, [esp + 0x1d0]
inc ebp
cmp ebp, edx
je 0x658e9c29
dec esi
test esi, esi
jg 0x658e9bbb
dec dword [esp + 0x3c]
js 0x658e9c15
lea ebx, [esp + 0xac]
mov byte [ebp], 0x20
lea ecx, [esp + 0x1d0]
inc ebp
cmp ebp, ecx
je 0x658e9c53
dec dword [esp + 0x3c]
jns 0x658e9bff
mov ebx, dword [esp + 0x80]
mov dword [esp], ebx
call fcn.658ec3b8
jmp 0x658e8bc8
mov dword [esp], edx
lea eax, [esp + 0xac]
mov dword [esp + 4], eax
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e9bed
mov dword [esp + 4], ebx
mov dword [esp], edx
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e90ae
mov dword [esp + 4], ebx
mov dword [esp], ecx
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e9c0f
mov dword [esp], esi
lea eax, [esp + 0xac]
mov dword [esp + 4], eax
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e9496
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x58]
test ecx, ecx
setg al
test edx, edx
setne dl
or eax, edx
test al, 1
je 0x658e9cc0
mov byte [ebp], 0x2e
lea esi, [esp + 0x1d0]
inc ebp
cmp ebp, esi
jne 0x658e9cc0
jmp 0x658ea282
mov esi, 0x30
mov edx, esi
lea ecx, [esp + 0x1d0]
mov byte [ebp], dl
inc ebp
cmp ebp, ecx
je 0x658e9d1b
dec dword [esp + 0x48]
js 0x658e9cde
mov eax, dword [esp + 0x84]
movsx esi, byte [eax]
test esi, esi
je 0x658e9caa
inc eax
mov dword [esp + 0x84], eax
jmp 0x658e9caf
dec dword [esp + 0x3c]
js 0x658e9a4a
lea ebx, [esp + 0xac]
jmp 0x658e9cfb
dec dword [esp + 0x3c]
js 0x658e9a4a
mov byte [ebp], 0x20
lea esi, [esp + 0x1d0]
inc ebp
cmp ebp, esi
jne 0x658e9cf1
mov dword [esp + 4], ebx
mov dword [esp], esi
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e9cf1
mov dword [esp], ecx
lea eax, [esp + 0xac]
mov dword [esp + 4], eax
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e9cc0
mov byte [ebp], 0x30
lea ebx, [esp + 0x1d0]
inc ebp
cmp ebp, ebx
jne 0x658e8faf
mov dword [esp], ebx
lea eax, [esp + 0xac]
mov dword [esp + 4], eax
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e8faf
mov dword [esp], ebx
lea eax, [esp + 0xac]
mov dword [esp + 4], eax
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e9682
mov dword [esp + 0x3c], ebx
jmp 0x658e8cb8
mov dword [esp + 4], ebx
mov dword [esp], ecx
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e9a0e
mov dword [esp + 4], ebx
mov dword [esp], esi
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e9a35
cmp dword [esp + 0x58], 2
je 0x658ea0ee
mov esi, dword [esp + 0x40]
test esi, esi
je 0x658e9dd4
movzx ebx, byte [esp + 0x40]
lea esi, [esp + 0x1d0]
mov byte [ebp], bl
inc ebp
cmp ebp, esi
je 0x658ea28a
dec dword [esp + 0x3c]
js 0x658e90df
lea ebx, [esp + 0xac]
jmp 0x658e9df1
dec dword [esp + 0x3c]
js 0x658e90df
mov byte [ebp], 0x30
lea eax, [esp + 0x1d0]
inc ebp
cmp ebp, eax
jne 0x658e9de7
mov dword [esp + 4], ebx
mov dword [esp], eax
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e9de7
mov byte [ebp], 0x30
lea ecx, [esp + 0x1d0]
inc ebp
cmp ebp, ecx
jne 0x658e90bf
mov dword [esp], ecx
lea eax, [esp + 0xac]
mov dword [esp + 4], eax
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e90bf
mov edx, dword [esp + 0x84]
mov dword [esp], edx
call sub.msvcrt.dll_strlen
mov dword [esp + 0x48], eax
jmp 0x658e99a5
mov dword [eax], esi
jmp 0x658e8bc8
mov eax, 1
mov dword [esp + 0x48], eax
jmp 0x658e8f64
xor edx, edx
xor eax, eax
mov dword [esp + 0x58], edx
mov edx, dword [esp + 0x80]
mov dword [esp + 0x48], eax
movzx eax, byte [edx]
cmp al, 0x4e
sete dl
cmp al, 0x49
sete al
or eax, edx
test al, 1
jne 0x658e9e3f
mov ecx, dword [esp + 0x80]
mov dword [esp], ecx
call sub.msvcrt.dll_strlen
mov dword [esp + 0x94], eax
jmp 0x658e9543
mov eax, dword [esp + 0x8c]
add dword [esp + 0x8c], 8
fld qword [eax]
jmp 0x658e94e2
mov eax, dword [esp + 0x8c]
add dword [esp + 0x8c], 8
fld qword [eax]
jmp 0x658e92a9
mov eax, 1
mov dword [esp + 0x4c], eax
jmp 0x658e91c5
test ebx, ebx
js 0x658e9ef4
mov dword [esp + 0x3c], ebx
jmp 0x658e91c5
mov eax, 0x2d
neg ebx
mov dword [esp + 0x40], eax
mov dword [esp + 0x3c], ebx
jmp 0x658e91c5
mov eax, dword [esp + 0x8c]
add dword [esp + 0x8c], 8
fld qword [eax]
jmp 0x658e9799
mov dword [esp + 4], ebx
mov dword [esp], esi
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e99d6
mov eax, dword [esp + 0x8c]
add dword [esp + 0x8c], 4
mov ebx, dword [eax]
mov ecx, ebx
mov dword [esp + 0x78], ebx
sar ecx, 0x1f
mov dword [esp + 0x7c], ecx
jmp 0x658e98f4
mov eax, dword [esp + 0x8c]
xor ecx, ecx
add dword [esp + 0x8c], 4
mov edx, dword [eax]
mov dword [esp + 0x78], edx
mov dword [esp + 0x7c], ecx
jmp 0x658e98a7
mov dword [esp + 4], ebx
mov dword [esp], eax
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e9a88
mov byte [ebp], 0x2d
lea ecx, [esp + 0x1d0]
inc ebp
cmp ebp, ecx
je 0x658ea305
neg dword [esp + 0x94]
jmp 0x658e9b93
mov dword [esp + 4], ebx
mov dword [esp], esi
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e942c
mov eax, dword [esp + 0x8c]
add dword [esp + 0x8c], 4
mov ebx, dword [eax]
mov esi, ebx
mov dword [esp + 0x78], ebx
sar esi, 0x1f
mov dword [esp + 0x7c], esi
jmp 0x658e98f4
mov eax, dword [esp + 0x8c]
xor ebx, ebx
add dword [esp + 0x8c], 4
mov dword [esp + 0x7c], ebx
mov ecx, dword [eax]
mov dword [esp + 0x78], ecx
jmp 0x658e98a7
cmp byte [esi + 1], 0x32
jne 0x658e9245
add esi, 2
mov edx, 1
jmp 0x658e9931
mov byte [ebp], 0x30
lea ebx, [esp + 0x1d0]
inc ebp
cmp ebp, ebx
je 0x658ea2b7
mov edi, dword [esp + 0x48]
mov esi, dword [esp + 0x58]
test edi, edi
setg al
test esi, esi
setne dl
or eax, edx
test al, 1
je 0x658ea054
mov byte [ebp], 0x2e
lea esi, [esp + 0x1d0]
inc ebp
cmp ebp, esi
je 0x658ea2d1
mov ebx, dword [esp + 0x94]
test ebx, ebx
jns 0x658e9cc0
lea ebx, [esp + 0xac]
jmp 0x658ea087
dec dword [esp + 0x48]
mov eax, dword [esp + 0x94]
inc eax
mov dword [esp + 0x94], eax
test eax, eax
jns 0x658e9cc0
mov byte [ebp], 0x30
lea eax, [esp + 0x1d0]
inc ebp
cmp ebp, eax
jne 0x658ea06c
mov dword [esp + 4], ebx
mov dword [esp], eax
call fcn.658e8aa8
mov ebp, eax
jmp 0x658ea06c
mov dword [esp + 4], ebx
mov dword [esp], eax
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e96c5
mov dword [esp + 4], ebx
mov dword [esp], esi
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e964a
lea eax, [esi + 4]
jmp 0x658e9847
dec dword [esp + 0x3c]
mov edi, dword [esp + 0x48]
test edi, edi
jle 0x658e95e1
dec dword [esp + 0x3c]
jmp 0x658e95e1
mov byte [ebp], 0x30
lea ecx, [esp + 0x1d0]
inc ebp
cmp ebp, ecx
jne 0x658e9db4
mov dword [esp], ecx
lea eax, [esp + 0xac]
mov dword [esp + 4], eax
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e9db4
mov ebx, dword [esp + 0x58]
test ebx, ebx
je 0x658ea235
sub dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x48]
test ecx, ecx
jns 0x658e9543
xor edx, edx
mov dword [esp + 0x48], edx
jmp 0x658e9543
mov eax, str._NULL_
mov dword [esp + 0x84], eax
jmp 0x658e9969
mov esi, 1
mov ecx, 1
mov dword [esp + 0x94], esi
jmp 0x658e95be
mov dword [esp], edx
lea eax, [esp + 0xac]
mov dword [esp + 4], eax
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e9b70
mov dword [esp], edx
lea eax, [esp + 0xac]
mov dword [esp + 4], eax
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e8fcf
mov dword [esp], esi
lea eax, [esp + 0xac]
mov dword [esp + 4], eax
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e945d
mov eax, dword [esp + 0x8c]
add dword [esp + 0x8c], 4
movzx eax, word [eax]
mov dword [esp + 0x78], eax
xor eax, eax
mov dword [esp + 0x7c], eax
jmp 0x658e98a7
mov dword [esp], esi
lea eax, [esp + 0xac]
mov dword [esp + 4], eax
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e90df
mov dword [esp], ebx
lea eax, [esp + 0xac]
mov dword [esp + 4], eax
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e9b93
mov eax, dword [esp + 0x8c]
add dword [esp + 0x8c], 4
movsx eax, word [eax]
cdq
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], edx
jmp 0x658e98f4
mov word [eax], si
jmp 0x658e8bc8
sub esi, ecx
mov dword [esp + 0x48], esi
jmp 0x658ea12c
mov eax, dword [esp + 0x8c]
add dword [esp + 0x8c], 8
mov edx, dword [eax]
mov ecx, dword [eax + 4]
mov dword [esp + 0x78], edx
mov dword [esp + 0x7c], ecx
jmp 0x658e98f4
mov eax, dword [esp + 0x8c]
add dword [esp + 0x8c], 8
mov edx, dword [eax]
mov ecx, dword [eax + 4]
jmp 0x658e9f67
mov dword [esp], edx
jmp 0x658e9c66
mov dword [esp], esi
jmp 0x658e9d1e
mov dword [esp], esi
lea eax, [esp + 0xac]
mov dword [esp + 4], eax
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e9dd4
mov dword [esp + 4], ebx
mov dword [esp], ecx
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e9411
mov dword [esp], ebx
lea eax, [esp + 0xac]
mov dword [esp + 4], eax
call fcn.658e8aa8
mov ebp, eax
jmp 0x658ea028
mov dword [esp], esi
lea eax, [esp + 0xac]
mov dword [esp + 4], eax
call fcn.658e8aa8
mov ebp, eax
jmp 0x658ea054
mov dword [esp], ebx
lea eax, [esp + 0xac]
mov dword [esp + 4], eax
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e962f
mov dword [esp], ecx
lea eax, [esp + 0xac]
mov dword [esp + 4], eax
call fcn.658e8aa8
mov ebp, eax
jmp 0x658e9f9b