Function at 0x414160
Capabilities:
Parse credit card information
Resolve function by parsing pe exports

Disassembly:
push ebp
xor edx, edx
push edi
push esi
xor esi, esi
push ebx
sub esp, 0x58c
mov ebx, dword [esp + 0x5ac]
mov dword [esp + 0x98], esi
mov ecx, dword [esp + 0x5a0]
mov dword [esp + 0x90], edx
mov eax, dword [ebx + 8]
mov dword [esp + 0x94], ecx
xor ecx, ecx
cmp eax, 0xc
mov dword [esp + 0xa0], eax
mov dword [esp + 0x9c], ecx
jle 0x416000
sub eax, 0xc
mov dword [esp + 0xa0], eax
mov ebp, dword [esp + 0x5a8]
movzx eax, byte [ebp]
test al, al
je 0x414270
mov cl, al
mov dword [esp + 0x78], 0
movsx eax, cl
xor edx, edx
mov dword [esp + 0x8c], edx
xor ebx, ebx
mov edi, 0xffffffff
mov dword [esp + 0x74], 0
cmp eax, 0x3f
jg 0x415fe0
cmp eax, 0x26
jge 0x414220
cmp eax, 0x23
jg 0x4143a8
cmp eax, 0x20
jge 0x414220
sub eax, 8
cmp eax, 5
ja 0x4142a4
mov esi, esi
lea edi, [edi]
mov ebx, dword [esp + 0x5a4]
xor edx, edx
mov edi, dword [esp + 0x98]
sub ebx, edi
cmp ebx, 1
jbe 0x414297
mov esi, dword [esp + 0x94]
test esi, esi
je 0x414253
mov edx, dword [esp + 0x94]
mov byte [edx], cl
inc edx
mov dword [esp + 0x94], edx
inc dword [esp + 0x98]
inc ebp
movzx edx, byte [ebp]
test dl, dl
mov cl, dl
jne 0x4141cc
lea esi, [esi]
mov ebp, dword [esp + 0x94]
test ebp, ebp
je 0x414290
mov ecx, dword [esp + 0x5a4]
test ecx, ecx
je 0x414290
mov edi, dword [esp + 0x94]
mov byte [edi], 0
mov edx, dword [esp + 0x98]
add esp, 0x58c
mov eax, edx
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x90]
xor esi, esi
mov ecx, dword [0x425350]
test eax, eax
mov dword [esp + 0xac], ecx
je 0x414390
mov edi, dword [esp + 0x90]
sub edi, ebp
lea edx, [esp + 0xac]
mov dword [esp + 8], edx
mov dword [esp + 4], edi
mov dword [esp], ebp
call sub.MSVCP60.DLL_mbrlen
test eax, eax
je 0x4142fb
cmp eax, 0xfffffffe
je 0x414383
cmp eax, 0xffffffff
mov esi, 1
je 0x4142fb
mov esi, eax
mov ebx, esi
mov ecx, dword [esp + 0x5a4]
not ebx
mov edx, ebx
mov eax, dword [esp + 0x98]
shr edx, 0x1f
dec edx
and edx, ebx
sub ecx, eax
lea edi, [edx + esi]
xor edx, edx
cmp edi, ecx
jae 0x414297
mov ecx, dword [esp + 0x94]
test ecx, ecx
je 0x414373
test ebx, ebx
jle 0x414355
mov dword [esp + 8], ebx
mov eax, dword [esp + 0x94]
mov dword [esp + 4], 0x20
mov dword [esp], eax
call sub.msvcrt.dll_memset
add dword [esp + 0x94], ebx
mov dword [esp + 8], esi
mov ebx, dword [esp + 0x94]
mov dword [esp + 4], ebp
mov dword [esp], ebx
call sub.msvcrt.dll_memcpy
add dword [esp + 0x94], esi
add dword [esp + 0x98], edi
lea ebp, [esi + ebp - 1]
jmp 0x41425a
mov dword [esp], ebp
call sub.msvcrt.dll_strlen
jmp 0x4142f9
mov dword [esp], ebp
call sub.msvcrt.dll_strlen
lea ebx, [eax + ebp + 1]
mov dword [esp + 0x90], ebx
jmp 0x4142c2
cmp eax, 0x25
jne 0x4142a4
jmp 0x4143c0
inc ebp
movzx ecx, byte [ebp]
movsx edx, cl
mov al, cl
cmp edx, 0x30
je 0x4143e6
cmp edx, 0x30
jg 0x415fc0
cmp edx, 0x23
je 0x415fb0
cmp edx, 0x2d
jne 0x4143f2
movsx esi, al
mov dword [esp + 0x8c], esi
jmp 0x4143c0
movsx edx, al
sub edx, 0x30
cmp edx, 9
ja 0x414431
xor edi, edi
cmp edi, 0xccccccc
jg 0x415fa4
cmp edi, 0xccccccc
je 0x415f95
lea eax, [edi + edi*4]
movsx esi, cl
lea edi, [esi + eax*2 - 0x30]
inc ebp
movzx ecx, byte [ebp]
movsx edx, cl
sub edx, 0x30
cmp edx, 9
jbe 0x4143ff
movsx eax, cl
cmp eax, 0x45
je 0x415f84
xor edx, edx
cmp eax, 0x4f
mov dword [esp + 0x88], edx
je 0x415f84
movsx eax, cl
cmp eax, 0x7a
mov dword [esp + 0x70], eax
ja case.0x41445f.1
jmp dword [eax*4 + 0x414468]
mov esi, dword [esp + 0x88]
test esi, esi
jne case.0x41445f.1
lea ebx, [edi - 1]
mov eax, dword [esp + 0x98]
mov edx, ebx
shr edx, 0x1f
mov edi, dword [esp + 0x5a4]
dec edx
and edx, ebx
lea esi, [edx + 1]
sub edi, eax
xor edx, edx
cmp esi, edi
jae 0x414297
mov eax, dword [esp + 0x94]
test eax, eax
je 0x4146db
test ebx, ebx
jle 0x4146ca
cmp dword [esp + 0x8c], 0x30
je 0x4146e7
mov dword [esp + 8], ebx
mov edi, dword [esp + 0x94]
mov dword [esp + 4], 0x20
mov dword [esp], edi
call sub.msvcrt.dll_memset
add dword [esp + 0x94], ebx
movzx ecx, byte [ebp]
mov eax, dword [esp + 0x94]
mov byte [eax], cl
inc eax
mov dword [esp + 0x94], eax
add dword [esp + 0x98], esi
jmp 0x41425a
mov dword [esp + 8], ebx
mov ecx, dword [esp + 0x94]
mov dword [esp + 4], 0x30
mov dword [esp], ecx
jmp 0x4146ba
cmp byte [ebp], 0x25
mov esi, 1
je 0x414716
inc esi
mov edx, ebp
sub edx, esi
cmp byte [edx + 1], 0x25
jne 0x41470b
mov ebx, edi
mov ecx, dword [esp + 0x98]
sub ebx, esi
mov edi, ebx
shr edi, 0x1f
dec edi
and edi, ebx
lea edx, [edi + esi]
mov edi, dword [esp + 0x5a4]
mov dword [esp + 0x3c], edx
xor edx, edx
sub edi, ecx
cmp dword [esp + 0x3c], edi
jae 0x414297
mov eax, dword [esp + 0x94]
test eax, eax
je 0x4147e1
test ebx, ebx
jle 0x414788
cmp dword [esp + 0x8c], 0x30
je 0x414827
mov dword [esp + 8], ebx
mov edx, dword [esp + 0x94]
mov dword [esp + 4], 0x20
mov dword [esp], edx
call sub.msvcrt.dll_memset
add dword [esp + 0x94], ebx
mov ebx, dword [esp + 0x74]
test ebx, ebx
je 0x414809
mov ecx, ebp
lea ebx, [esi - 1]
sub ecx, esi
test esi, esi
lea edi, [ecx + 1]
je 0x4147da
movzx edx, byte [ebx + edi]
mov eax, dword [sym.imp.msvcrt.dll___mb_cur_max]
movzx ecx, dl
cmp dword [eax], 1
je 0x4147f9
mov dword [esp + 4], 2
mov dword [esp], ecx
call sub.msvcrt.dll__isctype
movzx edx, byte [ebx + edi]
test eax, eax
mov cl, dl
jne 0x4147ea
mov edx, dword [esp + 0x94]
mov byte [ebx + edx], cl
mov edx, ebx
dec ebx
test edx, edx
jne 0x41479e
add dword [esp + 0x94], esi
mov esi, dword [esp + 0x3c]
jmp 0x4146db
movzx ecx, dl
mov dword [esp], ecx
call sub.msvcrt.dll_toupper
mov cl, al
jmp 0x4147c9
mov eax, dword [sym.imp.msvcrt.dll__pctype]
mov eax, dword [eax]
movzx eax, word [eax + ecx*2]
and eax, 2
jmp 0x4147c3
mov dword [esp + 8], esi
mov ebx, ebp
mov edi, dword [esp + 0x94]
sub ebx, esi
inc ebx
mov dword [esp + 4], ebx
mov dword [esp], edi
call sub.msvcrt.dll_memcpy
jmp 0x4147da
mov dword [esp + 8], ebx
mov ecx, dword [esp + 0x94]
mov dword [esp + 4], 0x30
mov dword [esp], ecx
jmp 0x41477c
dec ebp
jmp case.0x41445f.1
mov edx, dword [esp + 0x88]
test edx, edx
jne case.0x41445f.1
test ebx, ebx
je case.0x41445f.114
mov dword [esp + 0x74], 1
mov dword [esp + 0x78], 0
mov byte [esp + 0xa8], 0x25
mov esi, dword [esp + 0x88]
lea eax, [esp + 0xa9]
test esi, esi
je 0x41489b
movzx eax, byte [esp + 0x88]
mov byte [esp + 0xa9], al
lea eax, [esp + 0xaa]
movzx ebx, byte [esp + 0x70]
lea edx, [esp + 0xa8]
mov byte [eax + 1], 0
mov byte [eax], bl
mov ecx, dword [esp + 0x5ac]
lea ebx, [esp + 0x170]
mov dword [esp + 8], edx
mov dword [esp + 4], 0x400
mov dword [esp + 0xc], ecx
mov dword [esp], ebx
call sub.msvcrt.dll_strftime
test eax, eax
mov esi, eax
jne 0x4148e7
cmp byte [esp + 0x170], 0
jne 0x414a8d
mov ebx, edi
mov ecx, dword [esp + 0x5a4]
sub ebx, esi
mov edx, ebx
mov eax, dword [esp + 0x98]
shr edx, 0x1f
dec edx
and edx, ebx
sub ecx, eax
lea edi, [edx + esi]
xor edx, edx
cmp edi, ecx
jae 0x414297
mov ecx, dword [esp + 0x94]
test ecx, ecx
je 0x4149ad
test ebx, ebx
jle 0x414953
cmp dword [esp + 0x8c], 0x30
je 0x414a72
mov dword [esp + 8], ebx
mov edx, dword [esp + 0x94]
mov dword [esp + 4], 0x20
mov dword [esp], edx
call sub.msvcrt.dll_memset
add dword [esp + 0x94], ebx
mov ebx, dword [esp + 0x78]
test ebx, ebx
je 0x4149d8
test esi, esi
lea ebx, [esi - 1]
je 0x4149a6
movzx edx, byte [esp + ebx + 0x170]
mov eax, dword [sym.imp.msvcrt.dll___mb_cur_max]
movzx ecx, dl
cmp dword [eax], 1
je 0x4149c8
mov dword [esp + 4], 1
mov dword [esp], ecx
call sub.msvcrt.dll__isctype
movzx edx, byte [esp + ebx + 0x170]
test eax, eax
mov cl, dl
jne 0x4149b9
mov eax, dword [esp + 0x94]
mov edx, ebx
mov byte [ebx + eax], cl
dec ebx
test edx, edx
jne 0x414962
add dword [esp + 0x94], esi
add dword [esp + 0x98], edi
jmp 0x41425a
movzx ecx, dl
mov dword [esp], ecx
call sub.msvcrt.dll_tolower
mov cl, al
jmp 0x414995
mov eax, dword [sym.imp.msvcrt.dll__pctype]
mov eax, dword [eax]
movzx eax, word [eax + ecx*2]
and eax, 1
jmp 0x41498f
mov ebx, dword [esp + 0x74]
test ebx, ebx
je 0x414a4f
test esi, esi
lea ebx, [esi - 1]
je 0x4149a6
movzx edx, byte [esp + ebx + 0x170]
mov eax, dword [sym.imp.msvcrt.dll___mb_cur_max]
movzx ecx, dl
cmp dword [eax], 1
je 0x414a3f
mov dword [esp + 4], 2
mov dword [esp], ecx
call sub.msvcrt.dll__isctype
movzx edx, byte [esp + ebx + 0x170]
test eax, eax
mov cl, dl
jne 0x414a30
mov edx, dword [esp + 0x94]
mov byte [ebx + edx], cl
mov edx, ebx
dec ebx
test edx, edx
jne 0x4149e7
jmp 0x4149a6
movzx ecx, dl
mov dword [esp], ecx
call sub.msvcrt.dll_toupper
mov cl, al
jmp 0x414a1a
mov eax, dword [sym.imp.msvcrt.dll__pctype]
mov eax, dword [eax]
movzx eax, word [eax + ecx*2]
and eax, 2
jmp 0x414a14
mov dword [esp + 8], esi
lea edx, [esp + 0x170]
mov dword [esp + 4], edx
mov ebx, dword [esp + 0x94]
mov dword [esp], ebx
call sub.msvcrt.dll_memcpy
jmp 0x4149a6
mov dword [esp + 8], ebx
mov eax, dword [esp + 0x94]
mov dword [esp + 4], 0x30
mov dword [esp], eax
jmp 0x414947
xor edx, edx
jmp 0x414297
cmp dword [esp + 0x88], 0x4f
je case.0x41445f.1
cmp dword [esp + 0x88], 0x45
je case.0x41445f.114
mov dword [esp + 0x84], edi
mov esi, dword [esp + 0x5ac]
mov ecx, dword [esi + 0x14]
add ecx, 0x76c
cmp edi, 1
jl 0x414dc2
mov ebx, 0x51eb851f
mov eax, ecx
mov esi, ecx
imul ebx
sar esi, 0x1f
sar edx, 5
sub edx, esi
lea ebx, [edx + edx*4]
lea esi, [ebx + ebx*4]
shl esi, 2
sub ecx, esi
shr ecx, 0x1f
sub edx, ecx
mov ecx, edx
cmp dword [esp + 0x88], 0x4f
je 0x414db5
mov eax, ecx
mov ebx, ecx
shr eax, 0x1f
mov dword [esp + 0x80], eax
lea esi, [esp + 0x57c]
je 0x414b1c
neg ebx
mov ecx, 0xcccccccd
mov eax, ebx
dec esi
mul ecx
shr edx, 3
lea eax, [edx + edx*4]
add eax, eax
sub ebx, eax
mov al, bl
add al, 0x30
mov ebx, edx
test edx, edx
mov byte [esi], al
jne 0x414b21
mov ebx, dword [esp + 0x80]
test ebx, ebx
je 0x414b4b
dec esi
mov byte [esi], 0x2d
cmp dword [esp + 0x8c], 0x2d
je 0x414da5
mov edx, dword [esp + 0x84]
lea ecx, [esp + 0x570]
mov eax, esi
mov dword [esp + 0x38], ecx
sub eax, ecx
lea ebx, [eax + edx - 0xc]
test ebx, ebx
jle 0x414c0e
cmp dword [esp + 0x8c], 0x5f
je 0x414d42
mov edi, dword [esp + 0x5a4]
xor edx, edx
mov eax, dword [esp + 0x98]
sub edi, eax
cmp dword [esp + 0x84], edi
jae 0x414297
mov ecx, dword [esp + 0x80]
test ecx, ecx
je 0x414bd8
mov edx, dword [esp + 0x94]
inc esi
test edx, edx
je 0x414bd1
mov edi, dword [esp + 0x94]
mov byte [edi], 0x2d
inc edi
mov dword [esp + 0x94], edi
inc dword [esp + 0x98]
mov eax, dword [esp + 0x94]
test eax, eax
je 0x414c05
mov dword [esp + 8], ebx
mov edx, dword [esp + 0x94]
mov dword [esp + 4], 0x30
mov dword [esp], edx
call sub.msvcrt.dll_memset
add dword [esp + 0x94], ebx
add dword [esp + 0x98], ebx
xor edi, edi
sub dword [esp + 0x38], esi
mov ebx, edi
xor edx, edx
mov eax, dword [esp + 0x38]
add eax, 0xc
sub ebx, eax
mov dword [esp + 0x68], eax
mov ecx, ebx
mov edi, eax
shr ecx, 0x1f
mov eax, dword [esp + 0x98]
dec ecx
and ecx, ebx
add edi, ecx
mov ecx, dword [esp + 0x5a4]
sub ecx, eax
cmp edi, ecx
jae 0x414297
mov edx, dword [esp + 0x94]
test edx, edx
je 0x4149ad
test ebx, ebx
jle 0x414c8a
cmp dword [esp + 0x8c], 0x30
je 0x414d27
mov dword [esp + 8], ebx
mov ecx, dword [esp + 0x94]
mov dword [esp + 4], 0x20
mov dword [esp], ecx
call sub.msvcrt.dll_memset
add dword [esp + 0x94], ebx
mov edx, dword [esp + 0x74]
test edx, edx
je 0x414d0a
mov ebx, dword [esp + 0x68]
mov eax, dword [esp + 0x68]
dec ebx
test eax, eax
je 0x414cdb
movzx edx, byte [ebx + esi]
mov eax, dword [sym.imp.msvcrt.dll___mb_cur_max]
movzx ecx, dl
cmp dword [eax], 1
je 0x414cfa
mov dword [esp + 4], 2
mov dword [esp], ecx
call sub.msvcrt.dll__isctype
movzx edx, byte [ebx + esi]
test eax, eax
mov cl, dl
jne 0x414ceb
mov eax, dword [esp + 0x94]
mov edx, ebx
mov byte [ebx + eax], cl
dec ebx
test edx, edx
jne 0x414c9f
mov ecx, dword [esp + 0x68]
add dword [esp + 0x94], ecx
jmp 0x4149ad
movzx ecx, dl
mov dword [esp], ecx
call sub.msvcrt.dll_toupper
mov cl, al
jmp 0x414cca
mov eax, dword [sym.imp.msvcrt.dll__pctype]
mov eax, dword [eax]
movzx eax, word [eax + ecx*2]
and eax, 2
jmp 0x414cc4
mov dword [esp + 4], esi
mov ebx, dword [esp + 0x68]
mov esi, dword [esp + 0x94]
mov dword [esp + 8], ebx
mov dword [esp], esi
call sub.msvcrt.dll_memcpy
jmp 0x414cdb
mov dword [esp + 8], ebx
mov eax, dword [esp + 0x94]
mov dword [esp + 4], 0x30
mov dword [esp], eax
jmp 0x414c7e
mov ecx, dword [esp + 0x5a4]
xor edx, edx
mov eax, dword [esp + 0x98]
sub ecx, eax
cmp ebx, ecx
jae 0x414297
mov edx, dword [esp + 0x94]
test edx, edx
je 0x414d89
mov dword [esp + 8], ebx
mov ecx, dword [esp + 0x94]
mov dword [esp + 4], 0x20
mov dword [esp], ecx
call sub.msvcrt.dll_memset
add dword [esp + 0x94], ebx
add dword [esp + 0x98], ebx
mov ecx, edi
sub ecx, ebx
xor edx, edx
cmp edi, ebx
setle dl
lea edi, [edx - 1]
and edi, ecx
jmp 0x414c0e
lea ebx, [esp + 0x570]
mov dword [esp + 0x38], ebx
jmp 0x414c0e
test ecx, ecx
jns case.0x41445f.114
jmp 0x414b03
mov ebx, 1
mov dword [esp + 0x84], ebx
jmp 0x414ad0
mov dword [esp + 0x7c], 0x414130
mov eax, dword [esp + 0x88]
test eax, eax
jne case.0x41445f.1
mov dword [esp + 4], 0xffffffff
mov ebx, dword [esp + 0x5b4]
mov ecx, dword [esp + 0x5ac]
mov dword [esp], 0
mov eax, dword [esp + 0x5b0]
mov esi, dword [esp + 0x94]
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x7c]
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], eax
mov dword [esp + 8], ebx
mov ebx, edi
call fcn.00414160
mov dword [esp + 0x6c], eax
sub ebx, eax
mov ecx, dword [esp + 0x5a4]
mov edx, ebx
mov edi, dword [esp + 0x6c]
shr edx, 0x1f
mov eax, dword [esp + 0x98]
dec edx
and edx, ebx
add edi, edx
sub ecx, eax
xor edx, edx
cmp edi, ecx
jae 0x414297
mov edx, dword [esp + 0x94]
test edx, edx
je 0x414ef8
test ebx, ebx
jle 0x414ea1
cmp dword [esp + 0x8c], 0x30
je 0x414f73
mov dword [esp + 8], ebx
mov ecx, dword [esp + 0x94]
mov dword [esp + 4], 0x20
mov dword [esp], ecx
call sub.msvcrt.dll_memset
add dword [esp + 0x94], ebx
mov ecx, dword [esp + 0x5b4]
mov eax, dword [esp + 0x5b0]
mov edx, dword [esp + 0x5ac]
mov dword [esp + 0x14], ecx
mov ebx, dword [esp + 0x7c]
mov ecx, dword [esp + 0x5a4]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x98]
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x94]
sub ecx, eax
mov dword [esp + 8], ebx
mov dword [esp + 4], ecx
mov dword [esp], edx
call fcn.00414160
mov ebx, dword [esp + 0x6c]
add dword [esp + 0x94], ebx
add dword [esp + 0x98], edi
mov edi, dword [esp + 0x74]
test edi, edi
je 0x41425a
cmp esi, dword [esp + 0x94]
jae 0x41425a
movzx edx, byte [esi]
mov ebx, dword [sym.imp.msvcrt.dll___mb_cur_max]
movzx ecx, dl
cmp dword [ebx], 1
je 0x414f62
mov dword [esp + 4], 2
mov dword [esp], ecx
call sub.msvcrt.dll__isctype
movzx edx, byte [esi]
test eax, eax
mov cl, dl
jne 0x414f53
mov byte [esi], cl
inc esi
cmp esi, dword [esp + 0x94]
jb 0x414f18
jmp 0x41425a
movzx ecx, dl
mov dword [esp], ecx
call sub.msvcrt.dll_toupper
mov cl, al
jmp 0x414f42
mov ebx, dword [sym.imp.msvcrt.dll__pctype]
mov edi, dword [ebx]
movzx eax, word [edi + ecx*2]
and eax, 2
jmp 0x414f3c
mov dword [esp + 8], ebx
mov eax, dword [esp + 0x94]
mov dword [esp + 4], 0x30
mov dword [esp], eax
jmp 0x414e95
mov dword [esp + 0x7c], 0x414139
jmp 0x414ddb
cmp dword [esp + 0x88], 0x45
je case.0x41445f.1
mov dword [esp + 0x84], edi
cmp edi, 2
jl 0x414fc4
mov esi, dword [esp + 0x5ac]
mov ecx, dword [esi + 8]
jmp 0x414af5
mov edx, 2
mov dword [esp + 0x84], edx
jmp 0x414fb5
cmp dword [esp + 0x88], 0x45
je case.0x41445f.1
mov dword [esp + 0x84], edi
cmp edi, 2
jl 0x414ff8
mov ecx, dword [esp + 0xa0]
jmp 0x414af5
mov ebx, 2
mov dword [esp + 0x84], ebx
jmp 0x414fec
cmp dword [esp + 0x88], 0x45
je case.0x41445f.1
mov dword [esp + 0x84], edi
cmp edi, 2
jl 0x41502f
mov eax, dword [esp + 0x5ac]
mov ecx, dword [eax + 4]
jmp 0x414af5
mov ecx, 2
mov dword [esp + 0x84], ecx
jmp 0x415020
cmp dword [esp + 0x88], 0x45
je case.0x41445f.1
cmp edi, 0xffffffff
mov ecx, dword [esp + 0x5b4]
je 0x41507c
cmp edi, 8
mov ebx, edi
jg 0x41507c
mov esi, 0x66666667
mov eax, ecx
inc ebx
imul esi
mov eax, ecx
sar eax, 0x1f
sar edx, 2
mov ecx, edx
sub ecx, eax
cmp ebx, 8
jle 0x415066
mov dword [esp + 0x84], edi
cmp edi, 9
jge 0x414af5
mov eax, 9
mov dword [esp + 0x84], eax
jmp 0x414af5
mov dword [esp + 0x78], 1
mov dword [esp + 0x70], 0x70
test ebx, ebx
je case.0x41445f.114
mov dword [esp + 0x74], 0
mov dword [esp + 0x78], 1
jmp case.0x41445f.114
mov dword [esp + 0x7c], 0x414142
jmp 0x414dea
cmp dword [esp + 0x88], 0x45
je case.0x41445f.1
mov dword [esp + 0x84], edi
cmp edi, 2
jl 0x4150ff
mov esi, dword [esp + 0x5ac]
mov ecx, dword [esi]
jmp 0x414af5
mov ebx, 2
mov dword [esp + 0x84], ebx
jmp 0x4150f1
mov dword [esp + 0x7c], 0x414148
jmp 0x414dea
cmp dword [esp + 0x88], 0x45
je case.0x41445f.1
mov dword [esp + 0x84], edi
cmp edi, 2
jl 0x415164
mov eax, dword [esp + 0x5ac]
mov ebx, dword [eax + 0x18]
mov esi, dword [eax + 0x1c]
sub esi, ebx
lea ebx, [esi + 7]
mov eax, ebx
mov esi, 0x92492493
imul esi
lea ecx, [ebx + edx]
mov eax, ebx
sar ecx, 2
sar eax, 0x1f
sub ecx, eax
jmp 0x414af5
mov edx, 2
mov dword [esp + 0x84], edx
jmp 0x415137
cmp dword [esp + 0x88], 0x45
je case.0x41445f.1
mov dword [esp + 0x84], edi
cmp edi, 2
jl 0x4151ce
mov ecx, dword [esp + 0x5ac]
mov ebx, dword [ecx + 0x18]
mov ecx, 0x92492493
add ebx, 6
mov eax, ebx
mov esi, ebx
imul ecx
mov eax, dword [esp + 0x5ac]
sar esi, 0x1f
add edx, ebx
sar edx, 2
sub edx, esi
lea esi, [edx*8]
sub esi, edx
sub ebx, esi
mov esi, dword [eax + 0x1c]
sub esi, ebx
lea ebx, [esi + 7]
mov eax, ebx
imul ecx
jmp 0x415152
mov edx, 2
mov dword [esp + 0x84], edx
jmp 0x41518c
cmp dword [esp + 0x88], 0x4f
jne case.0x41445f.114
jmp case.0x41445f.1
cmp dword [esp + 0x88], 0x45
je case.0x41445f.114
cmp dword [esp + 0x88], 0x4f
je case.0x41445f.1
mov dword [esp + 0x84], edi
cmp edi, 1
jl 0x415230
mov esi, dword [esp + 0x5ac]
mov ecx, dword [esi + 0x14]
add ecx, 0x76c
jmp 0x414af5
mov edx, 1
mov dword [esp + 0x84], edx
jmp 0x41521b
test ebx, ebx
je 0x415254
mov dword [esp + 0x74], 0
mov dword [esp + 0x78], 1
mov esi, dword [esp + 0x9c]
test esi, esi
je 0x415410
mov ebx, dword [esp + 0x9c]
mov dword [esp], ebx
mov ebx, edi
call sub.msvcrt.dll_strlen
sub ebx, eax
mov esi, eax
mov ecx, dword [esp + 0x5a4]
mov edx, ebx
shr edx, 0x1f
dec edx
and edx, ebx
lea edi, [edx + eax]
mov eax, dword [esp + 0x98]
xor edx, edx
sub ecx, eax
cmp edi, ecx
jae 0x414297
mov ecx, dword [esp + 0x94]
test ecx, ecx
je 0x4149ad
test ebx, ebx
jle 0x4152e0
cmp dword [esp + 0x8c], 0x30
je 0x4153f2
mov dword [esp + 8], ebx
mov edx, dword [esp + 0x94]
mov dword [esp + 4], 0x20
mov dword [esp], edx
call sub.msvcrt.dll_memset
add dword [esp + 0x94], ebx
mov ebx, dword [esp + 0x78]
test ebx, ebx
je 0x415361
test esi, esi
lea ebx, [esi - 1]
je 0x4149a6
mov eax, dword [esp + 0x9c]
movzx edx, byte [ebx + eax]
mov eax, dword [sym.imp.msvcrt.dll___mb_cur_max]
movzx ecx, dl
cmp dword [eax], 1
je 0x415351
mov dword [esp], ecx
mov dword [esp + 4], 1
call sub.msvcrt.dll__isctype
mov ecx, dword [esp + 0x9c]
movzx edx, byte [ebx + ecx]
test eax, eax
mov cl, dl
jne 0x415342
mov edx, dword [esp + 0x94]
mov byte [ebx + edx], cl
mov edx, ebx
dec ebx
test edx, edx
jne 0x4152f3
jmp 0x4149a6
movzx ecx, dl
mov dword [esp], ecx
call sub.msvcrt.dll_tolower
mov cl, al
jmp 0x41532c
mov eax, dword [sym.imp.msvcrt.dll__pctype]
mov eax, dword [eax]
movzx eax, word [eax + ecx*2]
and eax, 1
jmp 0x415326
mov eax, dword [esp + 0x74]
test eax, eax
je 0x4153e2
test esi, esi
lea ebx, [esi - 1]
je 0x4149a6
mov eax, dword [esp + 0x9c]
movzx edx, byte [ebx + eax]
mov eax, dword [sym.imp.msvcrt.dll___mb_cur_max]
movzx ecx, dl
cmp dword [eax], 1
je 0x4153d2
mov dword [esp], ecx
mov dword [esp + 4], 2
call sub.msvcrt.dll__isctype
mov ecx, dword [esp + 0x9c]
movzx edx, byte [ebx + ecx]
test eax, eax
mov cl, dl
jne 0x4153c3
mov edx, dword [esp + 0x94]
mov byte [ebx + edx], cl
mov edx, ebx
dec ebx
test edx, edx
jne 0x415374
jmp 0x4149a6
movzx ecx, dl
mov dword [esp], ecx
call sub.msvcrt.dll_toupper
mov cl, al
jmp 0x4153ad
mov eax, dword [sym.imp.msvcrt.dll__pctype]
mov eax, dword [eax]
movzx eax, word [eax + ecx*2]
and eax, 2
jmp 0x4153a7
mov dword [esp + 8], esi
mov edx, dword [esp + 0x9c]
jmp 0x414a5a
mov dword [esp + 8], ebx
mov eax, dword [esp + 0x94]
mov dword [esp + 4], 0x30
mov dword [esp], eax
jmp 0x4152d4
mov eax, 0x414151
mov dword [esp + 0x9c], eax
jmp 0x415263
cmp dword [esp + 0x88], 0x45
je case.0x41445f.1
mov dword [esp + 0x84], edi
cmp edi, 2
jl 0x41544a
mov eax, dword [esp + 0x5ac]
mov ecx, dword [eax + 0xc]
jmp 0x414af5
mov ecx, 2
mov dword [esp + 0x84], ecx
jmp 0x41543b
cmp dword [esp + 0x88], 0x45
je case.0x41445f.1
mov dword [esp + 0x84], edi
cmp edi, 2
jl 0x4154a9
mov esi, dword [esp + 0x5ac]
mov ecx, dword [esi + 0xc]
cmp dword [esp + 0x8c], 0x30
je 0x414af5
cmp dword [esp + 0x8c], 0x2d
je 0x414af5
mov eax, 0x5f
mov dword [esp + 0x8c], eax
jmp 0x414af5
mov edx, 2
mov dword [esp + 0x84], edx
jmp 0x415472
cmp dword [esp + 0x88], 0x45
je case.0x41445f.1
mov edx, dword [esp + 0x5ac]
mov eax, dword [esp + 0x5ac]
mov ebx, dword [edx + 0x14]
mov eax, dword [eax + 0x18]
lea esi, [ebx + 0x76c]
mov dword [esp + 0x58], eax
mov dword [esp + 0x64], esi
mov esi, dword [edx + 0x1c]
mov edx, dword [esp + 0x58]
mov dword [esp + 0x5c], esi
mov eax, esi
sub eax, edx
lea esi, [eax + 0x17e]
mov edx, 0x92492493
mov eax, esi
imul edx
mov eax, esi
sar eax, 0x1f
add edx, esi
sar edx, 2
sub edx, eax
lea eax, [edx*8]
sub eax, edx
mov edx, dword [esp + 0x5c]
sub esi, eax
sub edx, esi
add edx, 3
mov dword [esp + 0x60], edx
js 0x4156c6
test byte [esp + 0x64], 3
mov dword [esp + 0x50], 0
jne 0x415590
mov eax, dword [esp + 0x64]
mov ebx, 0x51eb851f
imul ebx
mov eax, dword [esp + 0x64]
mov esi, edx
sar edx, 5
mov dword [esp + 0x2c], edx
cdq
sub dword [esp + 0x2c], edx
mov ebx, dword [esp + 0x2c]
lea eax, [ebx + ebx*4]
lea ebx, [eax + eax*4]
mov dword [esp + 0x20], ebx
shl ebx, 2
cmp dword [esp + 0x64], ebx
jne 0x415588
mov ebx, esi
sar ebx, 7
sub ebx, edx
lea esi, [ebx + ebx*4]
lea edx, [esi + esi*4]
shl edx, 4
cmp dword [esp + 0x64], edx
jne 0x415590
mov dword [esp + 0x50], 1
mov esi, dword [esp + 0x50]
mov eax, dword [esp + 0x58]
sub dword [esp + 0x5c], esi
mov ebx, dword [esp + 0x5c]
sub ebx, 0x16d
mov edx, ebx
sub edx, eax
lea esi, [edx + 0x17e]
mov eax, 0x92492493
imul esi
mov eax, esi
sar eax, 0x1f
lea edx, [edx + esi]
sar edx, 2
sub edx, eax
lea eax, [edx*8]
sub eax, edx
sub esi, eax
sub ebx, esi
mov eax, ebx
add eax, 3
js 0x4155e0
inc dword [esp + 0x64]
mov dword [esp + 0x60], eax
movsx eax, cl
cmp eax, 0x47
je 0x4156a3
cmp eax, 0x67
je 0x415630
mov dword [esp + 0x84], edi
cmp edi, 2
jl 0x415622
mov eax, dword [esp + 0x60]
mov ecx, 0x92492493
mov ebx, dword [esp + 0x60]
mov esi, dword [esp + 0x60]
imul ecx
sar esi, 0x1f
add edx, ebx
sar edx, 2
sub edx, esi
lea ecx, [edx + 1]
jmp 0x414af5
mov ecx, 2
mov dword [esp + 0x84], ecx
jmp 0x4155fd
mov dword [esp + 0x84], edi
cmp edi, 2
jl 0x415695
mov eax, dword [esp + 0x64]
mov ebx, 0x51eb851f
imul ebx
mov eax, dword [esp + 0x64]
mov dword [esp + 0x24], edx
mov ecx, dword [esp + 0x24]
cdq
sar ecx, 5
sub ecx, edx
lea esi, [ecx + ecx*4]
lea edx, [esi + esi*4]
shl edx, 2
sub dword [esp + 0x64], edx
mov esi, dword [esp + 0x64]
add esi, 0x64
mov eax, esi
imul ebx
mov dword [esp + 0x24], edx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x20], eax
mov eax, esi
cdq
sar ecx, 5
sub ecx, edx
lea edx, [ecx + ecx*4]
lea eax, [edx + edx*4]
mov ecx, esi
shl eax, 2
jmp 0x41515d
mov ecx, 2
mov dword [esp + 0x84], ecx
jmp 0x41563c
mov dword [esp + 0x84], edi
cmp edi, 1
jl 0x4156b8
mov ecx, dword [esp + 0x64]
jmp 0x414af5
mov ebx, 1
mov dword [esp + 0x84], ebx
jmp 0x4156af
mov dword [esp + 0x54], 0
add ebx, 0x76b
mov dword [esp + 0x64], ebx
test byte [esp + 0x64], 3
jne 0x41572f
mov esi, 0x51eb851f
mov eax, ebx
imul esi
mov eax, dword [esp + 0x64]
mov esi, edx
sar edx, 5
mov dword [esp + 0x2c], edx
cdq
sub dword [esp + 0x2c], edx
mov ebx, dword [esp + 0x2c]
lea eax, [ebx + ebx*4]
lea ebx, [eax + eax*4]
mov dword [esp + 0x20], ebx
shl ebx, 2
cmp dword [esp + 0x64], ebx
jne 0x415727
mov ebx, esi
sar ebx, 7
sub ebx, edx
lea esi, [ebx + ebx*4]
lea edx, [esi + esi*4]
shl edx, 4
cmp dword [esp + 0x64], edx
jne 0x41572f
mov dword [esp + 0x54], 1
mov eax, dword [esp + 0x5c]
mov esi, dword [esp + 0x54]
lea ebx, [esi + eax + 0x16d]
mov esi, dword [esp + 0x58]
mov eax, ebx
sub eax, esi
lea esi, [eax + 0x17e]
mov eax, 0x92492493
imul esi
mov eax, esi
sar eax, 0x1f
lea edx, [edx + esi]
sar edx, 2
sub edx, eax
lea eax, [edx*8]
sub eax, edx
sub esi, eax
sub ebx, esi
add ebx, 3
mov dword [esp + 0x60], ebx
jmp 0x4155e0
test ebx, ebx
je 0x415794
mov dword [esp + 0x74], 1
mov dword [esp + 0x78], 0
mov esi, dword [esp + 0x88]
test esi, esi
je case.0x41445f.114
jmp case.0x41445f.1
cmp dword [esp + 0x88], 0x45
je case.0x41445f.1
mov dword [esp + 0x84], edi
cmp edi, 3
jge 0x4157ce
mov esi, 3
mov dword [esp + 0x84], esi
mov ebx, dword [esp + 0x5ac]
mov ecx, dword [ebx + 0x1c]
inc ecx
jmp 0x414af5
cmp dword [esp + 0x88], 0x45
je case.0x41445f.1
mov dword [esp + 0x84], edi
cmp edi, 2
jl 0x415807
mov eax, dword [esp + 0x5ac]
mov ecx, dword [eax + 8]
jmp 0x41547c
mov ecx, 2
mov dword [esp + 0x84], ecx
jmp 0x4157f8
cmp dword [esp + 0x88], 0x45
je case.0x41445f.1
mov dword [esp + 0x84], edi
cmp edi, 2
jl 0x41583b
mov ecx, dword [esp + 0xa0]
jmp 0x41547c
mov edx, 2
mov dword [esp + 0x84], edx
jmp 0x41582f
cmp dword [esp + 0x88], 0x45
je case.0x41445f.1
mov dword [esp + 0x84], edi
cmp edi, 2
jl 0x415879
mov esi, dword [esp + 0x5ac]
mov ecx, dword [esi + 0x10]
jmp 0x4157d8
mov edx, 2
mov dword [esp + 0x84], edx
jmp 0x41586a
lea ebx, [edi - 1]
mov edx, dword [esp + 0x98]
mov ecx, ebx
shr ecx, 0x1f
mov edi, dword [esp + 0x5a4]
dec ecx
and ecx, ebx
sub edi, edx
lea esi, [ecx + 1]
xor edx, edx
cmp esi, edi
jae 0x414297
mov eax, dword [esp + 0x94]
test eax, eax
je 0x4146db
test ebx, ebx
jle 0x4158ee
cmp dword [esp + 0x8c], 0x30
je 0x4158fd
mov dword [esp + 8], ebx
mov edx, dword [esp + 0x94]
mov dword [esp + 4], 0x20
mov dword [esp], edx
call sub.msvcrt.dll_memset
add dword [esp + 0x94], ebx
mov eax, dword [esp + 0x94]
mov byte [eax], 0xa
jmp 0x4146d3
mov dword [esp + 8], ebx
mov edi, dword [esp + 0x94]
mov dword [esp + 4], 0x30
mov dword [esp], edi
jmp 0x4158e2
mov ebx, dword [esp + 0x5ac]
mov ecx, dword [ebx]
mov dword [esp + 0x140], ecx
mov esi, dword [ebx + 4]
mov dword [esp + 0x144], esi
mov edx, dword [ebx + 8]
mov dword [esp + 0x148], edx
mov ecx, dword [ebx + 0xc]
mov dword [esp + 0x14c], ecx
mov esi, dword [ebx + 0x10]
mov dword [esp + 0x150], esi
mov edx, dword [ebx + 0x14]
mov dword [esp + 0x154], edx
mov ecx, dword [ebx + 0x18]
mov dword [esp + 0x158], ecx
mov esi, dword [ebx + 0x1c]
lea ecx, [esp + 0x140]
mov dword [esp + 0x15c], esi
mov edx, dword [ebx + 0x20]
lea esi, [esp + 0x57c]
mov dword [esp], ecx
mov ebx, 0x66666667
mov dword [esp + 0x160], edx
call sub.msvcrt.dll_mktime
mov ecx, eax
shr eax, 0x1f
mov dword [esp + 0x80], eax
mov eax, ecx
imul ebx
mov eax, ecx
sar eax, 0x1f
sar edx, 2
sub edx, eax
lea eax, [edx + edx*4]
add eax, eax
sub ecx, eax
mov eax, ecx
cmp dword [esp + 0x80], 0
mov ecx, edx
je 0x4159c1
neg eax
add al, 0x30
dec esi
test edx, edx
mov byte [esi], al
mov eax, 1
mov dword [esp + 0x84], eax
jne 0x41599c
jmp 0x414b3c
lea ebx, [edi - 1]
mov eax, dword [esp + 0x98]
mov edx, ebx
shr edx, 0x1f
mov edi, dword [esp + 0x5a4]
dec edx
and edx, ebx
lea esi, [edx + 1]
sub edi, eax
xor edx, edx
cmp esi, edi
jae 0x414297
mov ecx, dword [esp + 0x94]
test ecx, ecx
je 0x4146db
test ebx, ebx
jle 0x415a42
cmp dword [esp + 0x8c], 0x30
je 0x415a51
mov dword [esp + 8], ebx
mov eax, dword [esp + 0x94]
mov dword [esp + 4], 0x20
mov dword [esp], eax
call sub.msvcrt.dll_memset
add dword [esp + 0x94], ebx
mov eax, dword [esp + 0x94]
mov byte [eax], 9
jmp 0x4146d3
mov dword [esp + 8], ebx
mov edi, dword [esp + 0x94]
mov dword [esp + 4], 0x30
mov dword [esp], edi
jmp 0x415a36
mov dword [esp + 0x84], edi
cmp edi, 1
jl 0x415ab0
mov eax, dword [esp + 0x5ac]
mov esi, dword [eax + 0x18]
mov eax, 0x92492493
add esi, 6
imul esi
mov ebx, esi
sar ebx, 0x1f
lea ecx, [edx + esi]
sar ecx, 2
sub ecx, ebx
lea ebx, [ecx*8]
sub ebx, ecx
sub esi, ebx
lea ecx, [esi + 1]
jmp 0x414af5
mov esi, 1
mov dword [esp + 0x84], esi
jmp 0x415a7c
cmp dword [esp + 0x88], 0x45
je case.0x41445f.1
mov dword [esp + 0x84], edi
cmp edi, 1
jl 0x415ae7
mov eax, dword [esp + 0x5ac]
mov ecx, dword [eax + 0x18]
jmp 0x414af5
mov ebx, 1
mov dword [esp + 0x84], ebx
jmp 0x415ad8
cmp dword [esp + 0x88], 0x45
je case.0x41445f.114
mov dword [esp + 0x84], edi
cmp edi, 2
jl 0x415b44
mov ebx, dword [esp + 0x5ac]
mov esi, dword [ebx + 0x14]
mov ebx, 0x51eb851f
mov eax, esi
imul ebx
mov eax, esi
sar edx, 5
mov dword [esp + 0x20], edx
cdq
sub dword [esp + 0x20], edx
mov eax, dword [esp + 0x20]
lea ecx, [eax + eax*4]
lea edx, [ecx + ecx*4]
shl edx, 2
sub esi, edx
jmp 0x41566a
mov ecx, 2
mov dword [esp + 0x84], ecx
jmp 0x415b0f
mov eax, dword [esp + 0x5ac]
mov edx, dword [eax + 0x20]
test edx, edx
js 0x41425a
mov dword [esp + 0x4c], 0
mov esi, dword [esp + 0x5b0]
test esi, esi
je 0x415c78
lea ebx, [edi - 1]
mov ecx, dword [esp + 0x5a4]
mov edx, ebx
shr edx, 0x1f
mov eax, dword [esp + 0x98]
dec edx
and edx, ebx
lea esi, [edx + 1]
sub ecx, eax
xor edx, edx
cmp esi, ecx
jae 0x414297
mov ecx, dword [esp + 0x94]
test ecx, ecx
je 0x415bf4
test ebx, ebx
jle 0x415be2
cmp dword [esp + 0x8c], 0x30
je 0x415c5d
mov dword [esp + 8], ebx
mov eax, dword [esp + 0x94]
mov dword [esp + 4], 0x20
mov dword [esp], eax
call sub.msvcrt.dll_memset
add dword [esp + 0x94], ebx
mov ebx, dword [esp + 0x94]
mov byte [ebx], 0x2b
inc ebx
mov dword [esp + 0x94], ebx
add dword [esp + 0x98], esi
mov dword [esp + 0x84], edi
mov eax, dword [esp + 0x4c]
mov ecx, 0x88888889
mov ebx, dword [esp + 0x4c]
imul ecx
lea esi, [ebx + edx]
sar esi, 5
sar ebx, 0x1f
sub esi, ebx
cmp edi, 4
jge 0x415c2d
mov edx, 4
mov dword [esp + 0x84], edx
mov eax, esi
mov ebx, esi
sar ebx, 0x1f
imul ecx
add edx, esi
sar edx, 5
sub edx, ebx
lea eax, [edx + edx*4]
lea ebx, [eax + eax*4]
mov eax, edx
shl eax, 4
sub eax, edx
lea ecx, [eax*4]
mov eax, esi
sub eax, ecx
lea ecx, [eax + ebx*4]
jmp 0x414af5
mov dword [esp + 8], ebx
mov edx, dword [esp + 0x94]
mov dword [esp + 4], 0x30
mov dword [esp], edx
jmp 0x415bd6
mov ecx, dword [eax]
mov dword [esp + 0xe0], ecx
mov ebx, dword [eax + 4]
mov dword [esp + 0xe4], ebx
mov ecx, dword [eax + 8]
mov dword [esp + 0xe8], ecx
mov ebx, dword [eax + 0xc]
mov dword [esp + 0xec], ebx
mov ecx, dword [eax + 0x10]
mov dword [esp + 0xf0], ecx
mov ebx, dword [eax + 0x14]
mov dword [esp + 0xf4], ebx
mov ecx, dword [eax + 0x18]
mov dword [esp + 0xf8], ecx
mov ebx, dword [eax + 0x1c]
lea ecx, [esp + 0xe0]
mov dword [esp + 0x100], edx
mov dword [esp], ecx
mov dword [esp + 0xfc], ebx
lea ebx, [esp + 0xa4]
call sub.msvcrt.dll_mktime
mov dword [esp + 0xa4], eax
inc eax
je 0x415ef4
mov dword [esp], ebx
lea esi, [esp + 0x110]
mov dword [esp + 4], esi
call fcn.004170b0
test eax, eax
je 0x41425a
mov eax, dword [esp + 0xf4]
test al, 3
jne 0x415ee7
sar eax, 2
add eax, 0x1da
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 0x124]
test cl, 3
mov dword [esp + 0x40], ecx
jne 0x415ed6
mov eax, ecx
sar eax, 2
add eax, 0x1da
mov dword [esp + 0x44], eax
mov ecx, 0x51eb851f
mov esi, dword [esp + 0x48]
mov eax, dword [esp + 0x48]
sar esi, 0x1f
imul ecx
mov eax, dword [esp + 0x44]
sar edx, 3
sub edx, esi
lea ebx, [edx + edx*4]
lea esi, [ebx + ebx*4]
mov ebx, dword [esp + 0x48]
sub ebx, esi
shr ebx, 0x1f
sub edx, ebx
mov esi, edx
mov ebx, dword [esp + 0x44]
imul ecx
sar ebx, 0x1f
sar edx, 3
sub edx, ebx
lea ecx, [edx + edx*4]
lea ebx, [ecx + ecx*4]
mov ecx, dword [esp + 0x44]
sub ecx, ebx
mov ebx, ecx
shr ebx, 0x1f
mov ecx, dword [esp + 0x44]
sub edx, ebx
sub dword [esp + 0x48], ecx
mov eax, edx
mov ebx, esi
sub esi, eax
sar edx, 2
mov eax, dword [esp + 0xf4]
sub dword [esp + 0x48], esi
sar ebx, 2
sub ebx, edx
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x48]
sub eax, edx
lea esi, [eax + eax*8]
add ebx, ecx
mov edx, dword [esp + 0x12c]
lea ecx, [eax + esi*8]
lea esi, [ecx + ecx*4]
mov eax, dword [esp + 0x114]
add esi, ebx
mov ebx, dword [esp + 0xfc]
sub ebx, edx
add esi, ebx
mov edx, dword [esp + 0xe8]
mov ebx, dword [esp + 0x118]
lea ecx, [esi + esi*2]
sub edx, ebx
lea ebx, [edx + ecx*8]
mov edx, dword [esp + 0xe4]
mov esi, ebx
shl esi, 4
sub esi, ebx
sub edx, eax
mov ebx, dword [esp + 0xe0]
lea ecx, [edx + esi*4]
mov eax, dword [esp + 0x110]
mov esi, ecx
shl esi, 4
sub esi, ecx
sub ebx, eax
lea edx, [ebx + esi*4]
test edx, edx
mov dword [esp + 0x4c], edx
jns 0x415b7b
lea ebx, [edi - 1]
mov ecx, dword [esp + 0x5a4]
mov edx, ebx
shr edx, 0x1f
mov eax, dword [esp + 0x98]
dec edx
and edx, ebx
lea esi, [edx + 1]
sub ecx, eax
xor edx, edx
cmp esi, ecx
jae 0x414297
mov eax, dword [esp + 0x94]
test eax, eax
je 0x415eae
test ebx, ebx
jle 0x415e9c
cmp dword [esp + 0x8c], 0x30
je 0x415ebe
mov dword [esp + 8], ebx
mov eax, dword [esp + 0x94]
mov dword [esp + 4], 0x20
mov dword [esp], eax
call sub.msvcrt.dll_memset
add dword [esp + 0x94], ebx
mov ebx, dword [esp + 0x94]
mov byte [ebx], 0x2d
inc ebx
mov dword [esp + 0x94], ebx
add dword [esp + 0x98], esi
neg dword [esp + 0x4c]
jmp 0x415bfb
mov dword [esp + 8], ebx
mov ecx, dword [esp + 0x94]
mov dword [esp + 4], 0x30
mov dword [esp], ecx
jmp 0x415e90
mov eax, dword [esp + 0x40]
sar eax, 2
add eax, 0x1db
jmp 0x415d46
sar eax, 2
add eax, 0x1db
jmp 0x415d24
mov dword [esp], ebx
lea edx, [esp + 0xb0]
mov dword [esp + 4], edx
call fcn.00417110
test eax, eax
je 0x41425a
mov ecx, dword [esp + 0xe0]
mov eax, dword [esp + 0xe4]
mov edx, dword [esp + 0xb0]
mov esi, dword [esp + 0xb4]
xor edx, ecx
xor esi, eax
mov ecx, dword [esp + 0xb8]
or edx, esi
mov eax, dword [esp + 0xe8]
mov esi, dword [esp + 0xbc]
xor ecx, eax
mov eax, dword [esp + 0xec]
or edx, ecx
mov ecx, dword [esp + 0xc0]
xor esi, eax
mov eax, dword [esp + 0xf0]
or edx, esi
mov esi, dword [esp + 0xc4]
xor ecx, eax
mov eax, dword [esp + 0xf4]
or edx, ecx
xor esi, eax
or edx, esi
jne 0x41425a
jmp 0x415cf2
mov dword [esp + 0x88], eax
inc ebp
movzx ecx, byte [ebp]
jmp 0x41444f
movsx esi, cl
sub esi, 0x30
cmp esi, 7
jle 0x414417
mov edi, 0x7fffffff
jmp 0x414421
mov ebx, 1
jmp 0x4143c0
cmp edx, 0x5e
je 0x415fd0
cmp edx, 0x5f
jmp 0x4143e4
mov dword [esp + 0x74], 1
jmp 0x4143c0
cmp eax, 0x41
jl 0x4142a4
cmp eax, 0x5f
jle 0x414220
sub eax, 0x61
cmp eax, 0x1d
jmp 0x414211
mov edi, dword [esp + 0xa0]
test edi, edi
jne 0x4141b7
mov eax, 0xc
jmp 0x4141b0