Function at 0x405e90
Capabilities:
Authenticate hmac
Encode data using base64
Parse credit card information
Parse pe header
Resolve function by parsing pe exports

Disassembly:
sub esp, 0xf0
push ebx
push ebp
push esi
push edi
mov eax, dword [esp + 0x104]
mov edx, dword [eax]
mov eax, dword [esp + 0x108]
mov ebx, dword [eax]
mov eax, dword [esp + 0x10c]
mov dword [esp + 0x2c], edx
mov esi, dword [eax]
mov eax, dword [esp + 0x2c]
shr eax, 0xb
and eax, 1
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x2c]
shr eax, 9
and eax, 1
mov dword [esp + 0xc8], eax
xor eax, 1
mov dword [esp + 0xc0], eax
mov eax, 0xfffffffe
xor ecx, ecx
mov dword [esp + 0x4c], eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x2c]
and eax, 1
xor ebp, ebp
mov edx, ebx
mov edi, ebx
shl eax, 8
mov dword [esp + 0x48], ecx
mov dword [esp + 0x38], ecx
mov dword [esp + 0xa8], ecx
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x14], ebx
mov dword [esp + 0xb4], edx
mov dword [esp + 0xcc], edi
mov dword [esp + 0x58], ecx
mov dword [esp + 0x9c], ecx
mov dword [esp + 0x60], ecx
mov dword [esp + 0x64], ecx
mov dword [esp + 0x68], eax
cmp dword [esp + 0x124], ecx
mov dword [esp + 0x10], esi
movzx eax, byte [esi]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x120]
je 0x405fce
mov eax, dword [eax + 0x10]
add eax, 0x1000
cmp ebx, eax
ja 0x4089d4
cmp ebx, edx
jae 0x405f7a
mov dword [esp + 0x14], edx
mov ebx, edx
mov eax, ebx
sub eax, edx
mov edx, eax
mov eax, dword [esp + 0x124]
add dword [eax], edx
cmp ebp, ecx
je 0x405fbf
cmp ebp, edi
jbe 0x405fc5
mov ecx, ebx
sub ecx, ebp
push ecx
push ebp
push edi
call sub.MSVCRT.dll_memmove
mov esi, dword [esp + 0x1c]
mov edx, edi
sub edx, ebp
add ebx, edx
add esp, 0xc
mov dword [esp + 0x14], ebx
mov dword [esp + 0x1c], edi
mov ebp, edi
xor ecx, ecx
mov dword [esp + 0xb4], ebx
jmp 0x405fe0
mov dword [esp + 0x14], edi
mov ebx, edi
mov dword [esp + 0xb4], ebx
jmp 0x405fe0
mov edx, dword [eax + 0x10]
add edx, 0x1000
cmp dword [eax + 0x20], edx
ja 0x4089f7
cmp dword [esp + 0x58], ecx
mov edx, dword [esp + 0x18]
je 0x406164
cmp edx, ecx
je 0x406164
cmp edx, 0x5c
jne 0x406020
cmp byte [esi + 1], 0x45
jne 0x406020
mov edi, dword [esp + 0xcc]
mov edx, dword [esp + 0xb4]
add esi, 1
mov dword [esp + 0x58], ecx
add esi, 1
xor ecx, ecx
jmp 0x405f45
cmp dword [esp + 0x60], ecx
je 0x406064
cmp dword [esp + 0x124], ecx
jne 0x406060
mov edi, dword [esp + 0x60]
xor edx, edx
mov dh, byte [edi + 2]
mov eax, esi
mov esi, edi
mov dl, byte [edi + 3]
sub eax, edx
mov edx, dword [esp + 0x120]
sub eax, dword [edx + 0x18]
mov edx, eax
sar edx, 8
mov byte [esi + 4], dl
mov edx, edi
mov byte [edx + 5], al
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x60], ecx
test dword [esp + 0x2c], 0x4000
je case.0x4062e4.1
mov byte [ebx], 0x4d
mov byte [ebx + 1], 0xff
mov eax, esi
mov esi, dword [esp + 0x120]
mov dword [esp + 0x60], ebx
add ebx, 1
mov ecx, eax
sub ecx, dword [esi + 0x18]
add ebx, 1
sar ecx, 8
mov byte [ebx], cl
sub al, byte [esi + 0x18]
mov byte [ebx + 2], 0
mov byte [ebx + 1], al
mov byte [ebx + 3], 0
mov esi, dword [esp + 0x10]
add ebx, 4
mov dword [esp + 0x14], ebx
cmp dword [esp + 0x40], 0
mov eax, 1
mov byte [esp + 0xac], dl
je 0x4060f0
cmp edx, 0xc0
jl 0x4060f0
mov dl, byte [esi + eax]
add esi, eax
and dl, 0xc0
cmp dl, 0x80
jne 0x4060f0
mov dword [esp + 0x10], esi
mov cl, byte [esi]
add esi, 1
mov byte [esp + eax + 0xac], cl
mov dl, byte [esi]
and dl, 0xc0
add eax, 1
cmp dl, 0x80
je 0x4060d3
mov cl, byte [esp + 0x2c]
and cl, 1
or cl, 0x16
mov dword [esp + 0x1c], ebx
mov byte [ebx], cl
add ebx, 1
xor esi, esi
test eax, eax
mov dword [esp + 0x14], ebx
jle 0x406127
lea ecx, [ecx]
mov dl, byte [esp + esi + 0xac]
mov byte [ebx], dl
add esi, 1
add ebx, 1
cmp esi, eax
jl 0x406110
mov dword [esp + 0x14], ebx
mov ecx, dword [esp + 0x34]
cmp ecx, 0xfffffffe
mov edx, dword [esp + 0x50]
mov dword [esp + 0x4c], edx
jne 0x408989
or ecx, 0xffffffff
cmp eax, 1
mov dword [esp + 0x5c], ecx
je 0x408959
cmp dword [esp + 0x68], 0
je 0x408959
mov dword [esp + 0x50], ecx
mov dword [esp + 0x34], ecx
jmp 0x40635c
cmp edx, 0x2a
je 0x4062eb
cmp edx, 0x2b
je 0x4062eb
cmp edx, 0x3f
je 0x4062eb
cmp edx, 0x7b
jne 0x406198
lea eax, [esi + 1]
call fcn.00404c60
test eax, eax
mov edx, dword [esp + 0x18]
jne 0x4062eb
mov edi, dword [esp + 0x60]
test edi, edi
mov dword [esp + 0x24], 0
je 0x4061f6
mov eax, dword [esp + 0xa8]
mov ecx, eax
sub eax, 1
test ecx, ecx
mov dword [esp + 0xa8], eax
jg 0x4061f6
cmp dword [esp + 0x124], 0
jne 0x4061ee
xor ecx, ecx
mov ch, byte [edi + 2]
mov eax, esi
mov cl, byte [edi + 3]
sub eax, ecx
mov ecx, dword [esp + 0x120]
sub eax, dword [ecx + 0x18]
mov ecx, eax
sar ecx, 8
mov byte [edi + 4], cl
mov byte [edi + 5], al
mov esi, dword [esp + 0x10]
mov dword [esp + 0x60], 0
test byte [esp + 0x2c], 8
je 0x406286
mov eax, dword [esp + 0x120]
mov ecx, dword [eax + 0xc]
test byte [edx + ecx], 1
jne 0x406364
cmp edx, 0x23
jne 0x406286
add esi, 1
mov dword [esp + 0x10], esi
mov al, byte [esi]
test al, al
je 0x40627a
mov edi, dword [esp + 0x120]
mov edi, edi
mov ecx, dword [edi + 0x48]
test ecx, ecx
je 0x4062f8
mov eax, dword [edi + 0x1c]
cmp esi, eax
jae 0x40631e
mov edx, dword [esp + 0x40]
push edx
lea edx, [edi + 0x4c]
push edx
push eax
push ecx
push esi
call fcn.00410bc0
mov esi, dword [esp + 0x24]
add esp, 0x14
test eax, eax
je 0x40631e
mov ecx, dword [edi + 0x4c]
lea esi, [esi + ecx - 1]
mov dword [esp + 0x10], esi
cmp byte [esi], 0
jne 0x406364
mov dword [esp + 0x18], 0
mov edx, dword [esp + 0x18]
test dword [esp + 0x2c], 0x4000
je 0x4062d4
cmp dword [esp + 0x24], 0
jne 0x4062d4
mov byte [ebx], 0x4d
mov byte [ebx + 1], 0xff
mov eax, esi
mov esi, dword [esp + 0x120]
mov dword [esp + 0x60], ebx
add ebx, 1
mov ecx, eax
sub ecx, dword [esi + 0x18]
add ebx, 1
sar ecx, 8
mov byte [ebx], cl
sub al, byte [esi + 0x18]
mov byte [ebx + 2], 0
mov byte [ebx + 1], al
mov byte [ebx + 3], 0
mov esi, dword [esp + 0x10]
add ebx, 4
mov dword [esp + 0x14], ebx
cmp edx, 0x7c
ja case.0x4062e4.1
movzx eax, byte [edx + 0x408dc4]
jmp dword [eax*4 + 0x408d94]
mov dword [esp + 0x24], 1
jmp 0x4061f6
mov ecx, dword [edi + 0x4c]
mov edx, dword [edi + 0x1c]
sub edx, ecx
cmp esi, edx
ja 0x40631e
cmp al, byte [edi + 0x50]
jne 0x40631e
cmp ecx, 1
je 0x406266
mov al, byte [esi + 1]
cmp al, byte [edi + 0x51]
je 0x406266
add esi, 1
mov dword [esp + 0x10], esi
mov al, byte [esi]
test al, al
jne 0x406230
jmp 0x40627a
test byte [esp + 0x2c], 2
je 0x40634a
cmp dword [esp + 0x34], 0xfffffffe
jne 0x40634a
mov dword [esp + 0x34], 0xffffffff
mov dword [esp + 0x1c], 0
mov byte [ebx], 0x14
add ebx, 1
mov dword [esp + 0x14], ebx
mov esi, dword [esp + 0x10]
mov ebp, dword [esp + 0x1c]
mov edi, dword [esp + 0xcc]
mov edx, dword [esp + 0xb4]
add esi, 1
xor ecx, ecx
jmp 0x405f45
mov dword [esp + 0x1c], 0
mov byte [ebx], 0x15
jmp 0x406355
mov eax, dword [esp + 0x34]
cmp eax, 0xfffffffe
jne 0x406399
or eax, 0xffffffff
mov dword [esp + 0x34], eax
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x5c], eax
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x1c], ebx
mov byte [ebx], 0xb
jmp 0x406355
mov al, byte [esi + 1]
cmp al, 0x3a
mov dword [esp + 0x1c], ebx
je 0x4063c1
cmp al, 0x2e
je 0x4063c1
cmp al, 0x3d
jne 0x4063e3
mov ecx, dword [esp + 0x120]
lea edx, [esp + 0x74]
push edx
mov eax, esi
call fcn.00405580
mov esi, dword [esp + 0x14]
add esp, 4
test eax, eax
jne 0x408a6a
add esi, 1
mov dword [esp + 0x10], esi
movzx edi, byte [esi]
cmp edi, 0x5e
jne 0x406408
add esi, 1
mov dword [esp + 0x10], esi
movzx edi, byte [esi]
mov dword [esp + 0x24], 1
xor eax, eax
jmp 0x40640e
xor eax, eax
mov dword [esp + 0x24], eax
cmp edi, eax
lea ecx, [ebx + 4]
mov dword [esp + 0x20], eax
mov dword [esp + 0x30], 0xffffffff
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x98], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x18], ecx
je 0x408b14
cmp dword [esp + 0x40], 0
je 0x4064c4
cmp edi, 0x7f
jle 0x4064c4
cmp edi, 0xc0
jl 0x4064c4
mov edx, edi
and edx, 0x3f
movzx edx, byte [edx + 0x42a030]
mov eax, dword [edx*4 + 0x42a018]
lea ebp, [edx + edx*2]
add ebp, ebp
and eax, edi
mov ecx, ebp
shl eax, cl
mov dword [esp + 0x3c], edx
mov edi, eax
mov eax, 1
cmp edx, eax
jl 0x4064be
movzx edx, byte [eax + esi]
sub ebp, 6
and edx, 0x3f
mov ecx, ebp
shl edx, cl
add eax, 1
or edi, edx
mov edx, dword [esp + 0x3c]
cmp eax, edx
jle 0x4064a3
add esi, edx
mov dword [esp + 0x10], esi
cmp dword [esp + 0x58], 0
je 0x4064ee
cmp edi, 0x5c
jne 0x4066a2
cmp byte [esi + 1], 0x45
jne 0x4066a2
mov dword [esp + 0x58], 0
add esi, 1
jmp 0x406b8b
cmp edi, 0x5b
jne 0x40665b
mov al, byte [esi + 1]
cmp al, 0x3a
je 0x40650a
cmp al, 0x2e
je 0x40650a
cmp al, 0x3d
jne 0x4066a2
mov ebp, dword [esp + 0x120]
lea eax, [esp + 0x74]
push eax
mov ecx, ebp
mov eax, esi
call fcn.00405580
add esp, 4
test eax, eax
je 0x40669e
mov esi, dword [esp + 0x10]
cmp byte [esi + 1], 0x3a
mov ebp, dword [ebp + 8]
mov dword [esp + 0x4c], 0
jne 0x408a99
add esi, 2
mov dword [esp + 0x10], esi
cmp byte [esi], 0x5e
jne 0x40655e
add esi, 1
mov dword [esp + 0x4c], 1
mov dword [esp + 0x10], esi
mov edi, dword [esp + 0x74]
sub edi, esi
mov ebx, esi
call fcn.004055d0
test eax, eax
jl 0x408abc
test byte [esp + 0x2c], 1
je 0x406581
cmp eax, 2
jg 0x406581
xor eax, eax
lea eax, [eax + eax*2]
mov esi, dword [eax*4 + 0x429a98]
add esi, ebp
mov ecx, 8
lea edi, [esp + 0xe0]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [eax*4 + 0x429a9c]
test ecx, ecx
mov esi, dword [eax*4 + 0x429aa0]
jl 0x4065e8
xor eax, eax
add ecx, ebp
test esi, esi
jl 0x4065d4
jmp 0x4065c0
mov dl, byte [eax + ecx]
or byte [esp + eax + 0xe0], dl
add eax, 1
cmp eax, 0x20
jl 0x4065c0
jmp 0x4065e8
mov dl, byte [eax + ecx]
not dl
and byte [esp + eax + 0xe0], dl
add eax, 1
cmp eax, 0x20
jl 0x4065d4
test esi, esi
jge 0x4065ee
neg esi
cmp esi, 1
jne 0x4065fd
and byte [esp + 0xe1], 0xc3
jmp 0x40660a
cmp esi, 2
jne 0x40660a
and byte [esp + 0xeb], 0x7f
xor eax, eax
cmp dword [esp + 0x4c], eax
je 0x406630
mov cl, byte [esp + eax + 0xe0]
not cl
or byte [esp + eax + 0x7c], cl
add eax, 1
cmp eax, 0x20
jl 0x406612
jmp 0x406643
mov dl, byte [esp + eax + 0xe0]
or byte [esp + eax + 0x7c], dl
add eax, 1
cmp eax, 0x20
jl 0x406630
mov esi, dword [esp + 0x74]
mov ebx, dword [esp + 0x14]
add esi, 1
mov dword [esp + 0x20], 0xa
jmp 0x406b8b
cmp edi, 0x5c
jne 0x4066a2
mov eax, dword [esp + 0x2c]
mov ebp, dword [esp + 0x120]
mov ecx, dword [ebp + 0x30]
mov esi, dword [esp + 0x110]
push 1
push eax
push ecx
lea edx, [esp + 0x1c]
push esi
push edx
call fcn.00404770
add esp, 0x14
cmp dword [esi], 0
mov edi, eax
jne 0x408d79
mov esi, edi
neg esi
cmp esi, 4
jne 0x40670c
lea edi, [esi + 4]
mov esi, dword [esp + 0x10]
mov edx, 0x5c
cmp byte [esi + 1], dl
mov al, 0x45
jne 0x4066c9
mov edi, edi
cmp byte [esi + 2], al
jne 0x4066c9
add esi, 2
mov dword [esp + 0x10], esi
cmp byte [esi + 1], dl
mov dword [esp + 0x58], 0
je 0x4066b0
cmp dword [esp + 0x58], 0
mov ecx, esi
mov dword [esp + 0x5c], ecx
jne 0x406cf9
cmp byte [esi + 1], 0x2d
jne 0x406cf9
add esi, 2
mov dword [esp + 0x10], esi
cmp byte [esi], dl
jne 0x40695b
cmp byte [esi + 1], al
jne 0x406928
add esi, 2
mov dword [esp + 0x10], esi
cmp byte [esi], dl
je 0x4066f3
jmp 0x40695b
cmp esi, 0x10
jne 0x406716
lea edi, [esi + 0x48]
jmp 0x40669e
cmp esi, 0xf
jne 0x406723
lea edi, [esi + 0x43]
jmp 0x40669e
cmp esi, 0x14
jne 0x40674d
mov esi, dword [esp + 0x10]
cmp byte [esi + 1], 0x5c
jne 0x406740
cmp byte [esi + 2], 0x45
jne 0x406740
add esi, 2
jmp 0x406b8b
mov dword [esp + 0x58], 1
jmp 0x406b8b
test edi, edi
jge 0x40669e
mov eax, dword [ebp + 8]
mov ebp, 2
add dword [esp + 0x20], ebp
cmp dword [esp + 0x124], 0
jne 0x40685d
lea ecx, [esi - 5]
cmp ecx, 0xe
ja case.0x406782.11
movzx ecx, byte [ecx + 0x408e64]
jmp dword [ecx*4 + 0x408e44]
xor esi, esi
jmp 0x406790
mov dl, byte [eax + esi + 0x40]
or byte [esp + esi + 0x7c], dl
add esi, 1
cmp esi, 0x20
jl 0x406790
jmp case.0x406782.19
xor esi, esi
jmp 0x4067b0
mov cl, byte [eax + esi + 0x40]
not cl
or byte [esp + esi + 0x7c], cl
add esi, 1
cmp esi, 0x20
jl 0x4067b0
jmp case.0x406782.19
xor esi, esi
lea esp, [esp]
mov dl, byte [eax + esi + 0xa0]
or byte [esp + esi + 0x7c], dl
add esi, 1
cmp esi, 0x20
jl 0x4067d0
jmp case.0x406782.19
xor esi, esi
lea ebx, [ebx]
mov cl, byte [eax + esi + 0xa0]
not cl
or byte [esp + esi + 0x7c], cl
add esi, 1
cmp esi, 0x20
jl 0x4067f0
jmp case.0x406782.19
mov edi, eax
lea edx, [esp + 0x7c]
xor esi, esi
sub edi, edx
lea ecx, [esp + esi + 0x7c]
mov al, byte [edi + ecx]
or byte [ecx], al
add esi, 1
cmp esi, 0x20
jl 0x406814
and byte [esp + 0x7d], 0xf7
jmp case.0x406782.19
mov edi, eax
lea ecx, [esp + 0x7c]
xor esi, esi
sub edi, ecx
lea esp, [esp]
lea ecx, [esp + esi + 0x7c]
mov dl, byte [edi + ecx]
not dl
or byte [ecx], dl
add esi, 1
cmp esi, 0x20
jl 0x406840
or byte [esp + 0x7d], 8
jmp case.0x406782.19
cmp edi, 0xfffffffa
je case.0x406782.19
cmp edi, 0xfffffffb
je case.0x406782.19
cmp edi, 0xfffffff6
je case.0x406782.19
cmp edi, 0xfffffff7
je case.0x406782.19
cmp edi, 0xfffffff8
je case.0x406782.19
cmp edi, 0xfffffff9
je case.0x406782.19
cmp esi, 0xe
je 0x4068b8
cmp esi, 0xd
je 0x4068b8
test byte [esp + 0x2c], 0x40
mov esi, dword [esp + 0x10]
jne 0x408ace
sub dword [esp + 0x20], ebp
movzx edi, byte [esi]
jmp 0x4066a2
mov eax, dword [esp + 0x110]
push eax
lea ecx, [esp + 0xdc]
push ecx
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0xdc]
call fcn.00404b50
add esp, 0xc
test eax, eax
jl 0x408d79
xor ecx, ecx
cmp esi, 0xe
sete cl
mov dword [esp + 0x28], 1
cmp ecx, dword [esp + 0xd0]
mov ecx, dword [esp + 0x18]
sete dl
add dl, 3
mov byte [ecx], dl
add ecx, 1
mov byte [ecx], al
mov al, byte [esp + 0xd8]
add ecx, 1
mov byte [ecx], al
add ecx, 1
sub dword [esp + 0x20], ebp
mov dword [esp + 0x18], ecx
jmp case.0x406782.19
cmp byte [esi], dl
jne 0x40695b
lea esp, [esp]
cmp byte [esi + 1], 0x51
jne 0x40695b
add esi, 2
mov dword [esp + 0x10], esi
cmp byte [esi], dl
jne 0x406953
cmp byte [esi + 1], al
jne 0x406953
add esi, 2
mov dword [esp + 0x10], esi
cmp byte [esi], dl
je 0x406930
jmp 0x40695b
mov dword [esp + 0x58], 1
mov al, byte [esi]
test al, al
je 0x406cf3
cmp dword [esp + 0x58], 0
jne 0x406974
cmp al, 0x5d
je 0x406cf3
cmp dword [esp + 0x40], 0
movzx ebp, al
je 0x4069e1
cmp ebp, 0xc0
jl 0x4069e1
mov ecx, ebp
and ecx, 0x3f
movzx eax, byte [ecx + 0x42a030]
mov edx, dword [eax*4 + 0x42a018]
and edx, ebp
lea ecx, [eax + eax*2]
add ecx, ecx
shl edx, cl
mov dword [esp + 0x3c], eax
mov ebp, edx
mov edx, 1
cmp eax, edx
mov dword [esp + 0x4c], edx
jl 0x4069d6
movzx eax, byte [edx + esi]
mov edx, dword [esp + 0x4c]
and eax, 0x3f
sub ecx, 6
shl eax, cl
add edx, 1
mov dword [esp + 0x4c], edx
or ebp, eax
mov eax, dword [esp + 0x3c]
cmp edx, eax
jle 0x4069b5
add esi, eax
mov dword [esp + 0x10], esi
mov edx, 0x5c
cmp dword [esp + 0x58], 0
jne 0x406a34
cmp ebp, edx
jne 0x406a34
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x120]
mov eax, dword [edx + 0x30]
mov esi, dword [esp + 0x110]
push 1
push ecx
push eax
lea ecx, [esp + 0x1c]
push esi
push ecx
call fcn.00404770
add esp, 0x14
cmp dword [esi], 0
mov ebp, eax
jne 0x408d79
test ebp, ebp
jge 0x406a30
cmp ebp, 0xfffffffc
jne 0x406ac8
mov ebp, 8
mov esi, dword [esp + 0x10]
cmp ebp, edi
jl 0x408af1
je 0x406cf9
cmp dword [esp + 0x40], 0
je 0x406c6a
cmp ebp, 0xff
jg 0x406a69
test byte [esp + 0x2c], 1
je 0x406c6a
cmp ebp, 0x7f
jle 0x406c6a
test byte [esp + 0x2c], 1
mov dword [esp + 0x28], 1
je 0x406b64
lea edx, [esp + 0xa0]
push edx
lea eax, [esp + 0xc8]
push eax
lea ecx, [esp + 0x54]
push ecx
mov ebx, ebp
mov dword [esp + 0x58], edi
mov dword [esp + 0x48], ebp
call fcn.00405720
add esp, 0xc
test eax, eax
je 0x406b60
mov esi, dword [esp + 0x18]
nop
mov eax, dword [esp + 0xc4]
cmp eax, edi
mov ebx, dword [esp + 0xa0]
jb 0x406aef
cmp ebx, ebp
jbe 0x406b33
jmp 0x406afe
cmp ebp, 0xfffffff0
jne 0x406ad7
mov ebp, 0x58
jmp 0x406a30
cmp ebp, 0xfffffff1
jne 0x406ae6
mov ebp, 0x52
jmp 0x406a30
mov esi, dword [esp + 0x5c]
jmp 0x406cf5
lea edx, [edi - 1]
cmp ebx, edx
jb 0x406afa
mov edi, eax
jmp 0x406b33
cmp ebx, ebp
jbe 0x406b09
lea ecx, [ebp + 1]
cmp eax, ecx
ja 0x406b09
mov ebp, ebx
jmp 0x406b33
cmp eax, ebx
jne 0x406b15
mov byte [esi], 1
add esi, 1
jmp 0x406b27
mov byte [esi], 2
add esi, 1
push esi
push eax
call fcn.00410e50
add esp, 8
add esi, eax
push esi
push ebx
call fcn.00410e50
add esp, 8
add esi, eax
mov ebx, dword [esp + 0x3c]
lea edx, [esp + 0xa0]
push edx
lea eax, [esp + 0xc8]
push eax
lea ecx, [esp + 0x54]
push ecx
call fcn.00405720
add esp, 0xc
test eax, eax
jne 0x406ab0
mov dword [esp + 0x18], esi
mov ebx, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
mov byte [esi], 2
add esi, 1
push esi
push edi
call fcn.00410e50
add esi, eax
push esi
push ebp
call fcn.00410e50
add esp, 0x10
add esi, eax
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x10]
add esi, 1
mov dword [esp + 0x10], esi
movzx edi, byte [esi]
test edi, edi
je 0x408b14
cmp edi, 0x5d
jne 0x406462
cmp dword [esp + 0x58], 0
jne 0x406462
mov edx, dword [esp + 0x20]
cmp edx, 1
jne 0x406be8
mov eax, dword [esp + 0x40]
test eax, eax
je 0x406dc1
cmp dword [esp + 0x28], 0
jne 0x406be8
cmp dword [esp + 0x24], 0
je 0x406dc1
mov ecx, dword [esp + 0x30]
cmp ecx, 0x80
jl 0x406dc5
mov eax, dword [esp + 0x34]
cmp eax, 0xfffffffe
jne 0x406bf8
or eax, 0xffffffff
mov dword [esp + 0x34], eax
cmp dword [esp + 0x28], 0
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x4c], eax
je 0x406e49
mov ecx, dword [esp + 0x18]
mov byte [ecx], 0
add ecx, 1
mov byte [ebx], 0x4a
add ebx, 3
cmp dword [esp + 0x24], 0
mov dword [esp + 0x18], ecx
setne al
test edx, edx
mov byte [ebx], al
jle 0x406e29
or al, 2
mov byte [ebx], al
add ebx, 1
mov ebp, ecx
sub ecx, ebx
push ecx
lea edx, [ebx + 0x20]
push ebx
push edx
call sub.MSVCRT.dll_memmove
mov ecx, 8
lea esi, [esp + 0x88]
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
lea ecx, [ebp + 0x20]
add esp, 0xc
mov dword [esp + 0x14], ecx
jmp 0x406e2d
mov eax, dword [esp + 0x20]
mov edx, ebp
sub edx, edi
cmp dword [esp + 0x124], 0
lea ecx, [eax + edx + 1]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x30], ebp
jne 0x406b8b
cmp edi, ebp
jg 0x406b8b
mov eax, dword [esp + 0x2c]
and eax, 1
mov dword [esp + 0x3c], eax
nop
mov eax, edi
cdq
and edx, 7
add eax, edx
mov ecx, edi
and ecx, 7
mov dl, 1
shl dl, cl
sar eax, 3
lea eax, [esp + eax + 0x7c]
or byte [eax], dl
cmp dword [esp + 0x3c], 0
je 0x406ce7
mov eax, dword [esp + 0x120]
mov ecx, dword [eax + 4]
movzx ecx, byte [ecx + edi]
mov eax, ecx
cdq
and edx, 7
add eax, edx
and ecx, 7
mov dl, 1
sar eax, 3
shl dl, cl
lea eax, [esp + eax + 0x7c]
or byte [eax], dl
add edi, 1
cmp edi, ebp
jle 0x406ca0
jmp 0x406b8b
mov esi, ecx
mov dword [esp + 0x10], esi
cmp dword [esp + 0x40], 0
je 0x406d68
cmp edi, 0xff
jg 0x406d14
test byte [esp + 0x2c], 1
je 0x406d68
cmp edi, 0x7f
jle 0x406d68
mov esi, dword [esp + 0x18]
mov byte [esi], 1
add esi, 1
push esi
push edi
mov dword [esp + 0x30], 1
call fcn.00410e50
add esi, eax
add esp, 8
test byte [esp + 0x2c], 1
mov dword [esp + 0x18], esi
je case.0x406782.19
push edi
call fcn.00410b30
add esp, 4
cmp eax, 0xffffffff
je case.0x406782.19
mov byte [esi], 1
add esi, 1
push esi
push eax
call fcn.00410e50
add esp, 8
jmp 0x406b81
mov eax, edi
cdq
and edx, 7
add eax, edx
sar eax, 3
lea ebp, [esp + eax + 0x7c]
mov ecx, edi
and ecx, 7
mov al, 1
shl al, cl
or byte [ebp], al
test byte [esp + 0x2c], 1
je 0x406db3
mov ecx, dword [esp + 0x120]
mov edx, dword [ecx + 4]
movzx edi, byte [edx + edi]
mov eax, edi
cdq
and edx, 7
add eax, edx
sar eax, 3
lea ebp, [esp + eax + 0x7c]
mov ecx, edi
and ecx, 7
mov al, 1
shl al, cl
or byte [ebp], al
add dword [esp + 0x20], 1
mov dword [esp + 0x30], edi
jmp 0x406b8b
mov ecx, dword [esp + 0x30]
cmp dword [esp + 0x24], 0
mov edx, dword [esp + 0x50]
mov dword [esp + 0x4c], edx
je 0x406df5
mov eax, dword [esp + 0x34]
cmp eax, 0xfffffffe
jne 0x406de4
or eax, 0xffffffff
mov dword [esp + 0x34], eax
mov byte [ebx], 0x18
add ebx, 1
mov dword [esp + 0x5c], eax
mov byte [ebx], cl
jmp 0x406355
test eax, eax
je 0x406e18
cmp ecx, 0x7f
jle 0x406e18
mov ecx, dword [esp + 0x30]
lea eax, [esp + 0xac]
push eax
push ecx
call fcn.00410e50
add esp, 8
jmp 0x4060f0
mov byte [esp + 0xac], cl
mov eax, 1
jmp 0x4060f0
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 0x1c]
mov ebx, dword [esp + 0x14]
mov edx, ecx
sub edx, eax
sar edx, 8
sub cl, al
mov byte [eax + 1], dl
mov byte [eax + 2], cl
jmp 0x40635c
cmp dword [esp + 0x24], 0
je 0x406e87
mov byte [ebx], 0x49
add ebx, 1
cmp dword [esp + 0x124], 0
jne 0x406e9a
lea esi, [esp + 0x7c]
mov eax, ebx
sub esi, ebx
mov edi, 0x20
lea ecx, [ecx]
mov cl, byte [esi + eax]
not cl
mov byte [eax], cl
add eax, 1
sub edi, 1
jne 0x406e70
add ebx, 0x20
jmp 0x406358
mov byte [ebx], 0x48
add ebx, 1
mov ecx, 8
lea esi, [esp + 0x7c]
mov edi, ebx
rep movsd dword es:[edi], dword [esi]
add ebx, 0x20
jmp 0x406358
cmp dword [esp + 0x24], 0
je case.0x4062e4.1
mov edi, dword [esp + 0x110]
lea edx, [esp + 0x38]
push edx
lea eax, [esp + 0x4c]
push eax
lea eax, [esi + 1]
call fcn.00404cf0
mov ecx, edi
add esp, 8
cmp dword [ecx], 0
mov esi, eax
mov dword [esp + 0x10], esi
jne 0x408d7d
jmp 0x406f08
mov dword [esp + 0x38], 0xffffffff
jmp 0x406f00
mov dword [esp + 0x48], 1
mov dword [esp + 0x38], 0xffffffff
jmp 0x406f08
mov dword [esp + 0x38], 1
mov dword [esp + 0x48], 0
mov ecx, dword [esp + 0x38]
xor eax, eax
cmp ebp, eax
je 0x408b37
mov edx, dword [esp + 0x48]
cmp edx, eax
jne 0x406f2e
mov edi, dword [esp + 0x5c]
mov dword [esp + 0x34], edi
mov edi, dword [esp + 0x4c]
mov dword [esp + 0x50], edi
sub edx, ecx
neg edx
sbb edx, edx
and edx, 0x200
mov edi, ebp
mov dword [esp + 0xa4], edx
mov dword [esp + 0x44], edi
mov dl, byte [esi + 1]
cmp dl, 0x2b
mov dword [esp + 0x1c], eax
mov dword [esp + 0x30], eax
jne 0x406f68
add esi, 1
mov dword [esp + 0x30], 1
mov dword [esp + 0x10], esi
jmp 0x406f84
cmp dl, 0x3f
jne 0x406f7d
mov eax, dword [esp + 0xc0]
add esi, 1
mov dword [esp + 0x10], esi
jmp 0x406f84
mov eax, dword [esp + 0xc8]
mov dl, byte [ebp]
cmp dl, 0x16
mov dword [esp + 0x20], eax
mov byte [esp + 0x57], dl
je 0x4074d6
cmp dl, 0x17
je 0x4074d6
cmp dl, 0x18
jne 0x406fe1
cmp dword [esp + 0x30], 0
movzx edx, byte [ebp + 1]
mov dword [esp + 0x1c], 0xd
mov dword [esp + 0x18], edx
jne 0x4075a9
test ecx, ecx
jge 0x4075a9
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x40]
push eax
add esi, 1
push esi
push 0
push ecx
push edx
push 0x18
jmp 0x40757a
cmp dl, 0x11
jae 0x407022
cmp dword [esp + 0x30], 0
movzx edx, byte [esp + 0x57]
mov dword [esp + 0x1c], 0x1a
mov dword [esp + 0x18], edx
jne 0x4075a9
test ecx, ecx
jge 0x4075a9
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x40]
push eax
add esi, 1
push esi
push 0
push ecx
push 0
push edx
jmp 0x40757a
cmp dl, 0x48
je 0x407436
cmp dl, 0x49
je 0x407436
cmp dl, 0x4a
je 0x407436
cmp dl, 0x4b
je 0x407436
cmp dl, 0x58
je 0x40705e
cmp dl, 0x59
je 0x40705e
cmp dl, 0x57
je 0x40705e
cmp dl, 0x5a
jne 0x408b5a
mov eax, ebx
sub eax, ebp
cmp dl, 0x5a
mov dword [esp + 0x3c], 0
mov dword [esp + 0x28], eax
mov dword [esp + 0x18], 0
jne 0x407085
cmp byte [ebp + 3], 0x60
je 0x408b7d
cmp eax, 0x7530
jg 0x408ba0
cmp ecx, 0xffffffff
jne 0x4070ae
mov eax, ebp
xor edx, edx
mov dh, byte [eax + 1]
mov dl, byte [eax + 2]
add eax, edx
cmp byte [eax], 0x4f
jne 0x407097
mov edx, ebx
sub edx, eax
mov dword [esp + 0x3c], edx
mov eax, dword [esp + 0x48]
test eax, eax
jne 0x40717d
test ecx, ecx
je 0x407969
cmp ecx, 1
mov byte [ebx], al
jg 0x40710a
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x120]
mov edx, dword [esp + 0x40]
push eax
push ecx
push edx
push 1
push ebp
call fcn.00405610
mov eax, dword [esp + 0x3c]
push eax
lea esi, [ebp + 1]
push ebp
push esi
call sub.MSVCRT.dll_memmove
mov cl, byte [esp + 0x40]
add esp, 0x20
add ebx, 1
add cl, 0x61
mov byte [ebp], cl
mov dword [esp + 0x1c], esi
mov ebp, esi
jmp 0x40715c
mov edx, dword [esp + 0x64]
mov eax, dword [esp + 0x120]
mov ecx, dword [esp + 0x40]
push edx
push eax
push ecx
push 4
push ebp
call fcn.00405610
mov edx, dword [esp + 0x3c]
push edx
lea eax, [ebp + 4]
push ebp
push eax
call sub.MSVCRT.dll_memmove
mov cl, byte [esp + 0x40]
add cl, 0x61
mov byte [ebp], cl
add ebp, 1
mov byte [ebp], 0x58
add ebp, 1
add esp, 0x20
add ebx, 4
mov dword [esp + 0x18], ebp
mov byte [ebp], 0
mov byte [ebp + 1], 0
add ebp, 2
sub dword [esp + 0x38], 1
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x44]
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x124]
mov dword [esp + 0x14], ebx
jmp 0x407266
cmp eax, 1
mov ecx, dword [esp + 0x124]
jle 0x407256
test ecx, ecx
je 0x4071a4
mov edx, dword [esp + 0x48]
add edx, 0xffffffff
imul edx, dword [esp + 0x6c]
add dword [ecx], edx
jmp 0x407256
cmp dword [esp + 0x9c], 0
je 0x4071bd
cmp dword [esp + 0x50], 0
jge 0x4071bd
mov eax, dword [esp + 0x34]
mov dword [esp + 0x50], eax
cmp dword [esp + 0x48], 1
jle 0x407256
mov ecx, dword [esp + 0x48]
add ecx, 0xffffffff
mov dword [esp + 0x24], ecx
jmp 0x4071e0
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x120]
mov edi, dword [edx + 0x20]
push eax
push ebp
push ebx
call sub.MSVCRT.dll_memcpy
mov esi, dword [esp + 0x70]
add esp, 0xc
cmp esi, edi
jae 0x407234
mov eax, dword [esp + 0x120]
mov edx, dword [eax + 0x20]
xor ecx, ecx
mov ch, byte [esi]
add esi, 2
mov cl, byte [esi - 1]
add ecx, dword [esp + 0x28]
sar ecx, 8
mov byte [edx], cl
movzx ecx, byte [esi - 1]
add cl, byte [esp + 0x28]
mov edx, dword [eax + 0x20]
mov byte [edx + 1], cl
add dword [eax + 0x20], 2
cmp esi, edi
jb 0x407208
add ebx, dword [esp + 0x28]
sub dword [esp + 0x24], 1
mov dword [esp + 0x64], edi
jne 0x4071e0
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x44]
mov ecx, dword [esp + 0x124]
mov dword [esp + 0x14], ebx
mov eax, dword [esp + 0x38]
test eax, eax
jle 0x407268
sub eax, dword [esp + 0x48]
mov dword [esp + 0x38], eax
test eax, eax
jl 0x4073d9
test ecx, ecx
je 0x40728a
test eax, eax
jle 0x40728a
mov edx, dword [esp + 0x6c]
add edx, 7
imul edx, eax
sub edx, 6
add dword [ecx], edx
jmp 0x40738a
add eax, 0xffffffff
mov dword [esp + 0x24], eax
js 0x40738a
mov al, byte [esp + 0x20]
add al, 0x61
mov byte [esp + 0x57], al
mov eax, dword [esp + 0x120]
mov edi, dword [eax + 0x20]
mov cl, byte [esp + 0x57]
mov byte [ebx], cl
add ebx, 1
cmp dword [esp + 0x24], 0
mov dword [esp + 0x20], edi
je 0x4072e6
mov ecx, dword [esp + 0x18]
mov byte [ebx], 0x58
add ebx, 1
test ecx, ecx
jne 0x4072d1
xor eax, eax
jmp 0x4072d5
mov eax, ebx
sub eax, ecx
mov edx, eax
sar edx, 8
mov dword [esp + 0x18], ebx
mov byte [ebx], dl
mov byte [ebx + 1], al
add ebx, 2
mov eax, dword [esp + 0x28]
push eax
push ebp
push ebx
call sub.MSVCRT.dll_memcpy
mov esi, dword [esp + 0x70]
add esp, 0xc
cmp esi, edi
jae 0x40736b
mov eax, dword [esp + 0x24]
mov edi, eax
neg edi
sbb edi, edi
and edi, 3
add edi, 1
neg eax
sbb al, al
and al, 3
add al, 1
jmp 0x407320
mov edx, dword [esp + 0x120]
mov edx, dword [edx + 0x20]
xor ecx, ecx
mov ch, byte [esi]
add esi, 2
mov cl, byte [esi - 1]
add ecx, edi
add ecx, dword [esp + 0x28]
sar ecx, 8
mov byte [edx], cl
movzx ecx, byte [esi - 1]
add cl, byte [esp + 0x28]
mov edx, dword [esp + 0x120]
mov edx, dword [edx + 0x20]
add cl, al
mov byte [edx + 1], cl
mov ecx, dword [esp + 0x120]
add dword [ecx + 0x20], 2
cmp esi, dword [esp + 0x20]
jb 0x407320
mov edi, dword [esp + 0x20]
add ebx, dword [esp + 0x28]
sub dword [esp + 0x24], 1
mov dword [esp + 0x64], edi
jns 0x4072a1
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x44]
mov dword [esp + 0x14], ebx
mov ebp, dword [esp + 0x18]
test ebp, ebp
je 0x407843
mov eax, ebx
sub eax, ebp
add eax, 1
mov esi, ebx
sub esi, eax
xor ecx, ecx
mov ch, byte [esi + 1]
mov cl, byte [esi + 2]
test ecx, ecx
jne 0x4073b1
xor ebp, ebp
jmp 0x4073b3
sub ebp, ecx
mov byte [ebx], 0x4f
add ebx, 1
mov ecx, eax
sar ecx, 8
mov byte [ebx], cl
mov byte [ebx + 1], al
add ebx, 2
test ebp, ebp
mov byte [esi + 1], cl
mov byte [esi + 2], al
jne 0x407396
mov dword [esp + 0x14], ebx
jmp 0x40783b
xor eax, eax
mov esi, ebx
sub esi, dword [esp + 0x3c]
mov ah, byte [esi + 1]
mov edi, esi
mov al, byte [esi + 2]
sub edi, eax
mov al, byte [esp + 0x20]
add al, 0x50
test ecx, ecx
mov byte [esi], al
jne 0x40783b
cmp byte [edi], 0x57
je 0x40783b
mov ebp, edi
mov ecx, dword [esp + 0x40]
push ecx
push esi
push ebp
call fcn.00405390
add esp, 0xc
test eax, eax
jne 0x40742e
xor edx, edx
mov dh, byte [ebp + 1]
mov dl, byte [ebp + 2]
add ebp, edx
cmp byte [ebp], 0x4e
je 0x407406
jmp 0x40783b
add byte [edi], 3
jmp 0x40783b
test ecx, ecx
je 0x407969
cmp ecx, 1
je 0x407451
mov edx, dword [esp + 0x120]
mov dword [edx + 0x44], 1
cmp dword [esp + 0x48], 0
jne 0x40746d
cmp ecx, 0xffffffff
jne 0x407489
add al, 0x40
mov byte [ebx], al
add ebx, 1
mov dword [esp + 0x14], ebx
jmp 0x40783b
cmp dword [esp + 0x48], 1
jne 0x40749d
cmp ecx, 0xffffffff
jne 0x40749d
add al, 0x42
mov byte [ebx], al
add ebx, 1
mov dword [esp + 0x14], ebx
jmp 0x40783b
cmp ecx, 1
jne 0x40749d
add al, 0x44
mov byte [ebx], al
add ebx, ecx
mov dword [esp + 0x14], ebx
jmp 0x40783b
add al, 0x46
mov byte [ebx], al
mov eax, dword [esp + 0x48]
add ebx, 1
mov edx, eax
sar edx, 8
mov byte [ebx], dl
mov byte [ebx + 1], al
add ebx, 2
cmp ecx, 0xffffffff
jne 0x4074c0
xor ecx, ecx
mov dword [esp + 0x38], ecx
mov eax, ecx
sar eax, 8
mov byte [ebx], al
mov byte [ebx + 1], cl
add ebx, 2
mov dword [esp + 0x14], ebx
jmp 0x40783b
cmp dword [esp + 0x40], 0
je 0x40752a
test byte [ebx - 1], 0x80
lea edx, [ebx - 1]
je 0x40752a
mov ecx, edx
mov dl, byte [ecx]
and dl, 0xc0
cmp dl, 0x80
jne 0x4074fe
mov al, byte [ecx - 1]
sub ecx, 1
and al, 0xc0
cmp al, 0x80
je 0x4074f2
mov eax, ebx
sub eax, ecx
push eax
push ecx
lea ecx, [esp + 0xc0]
push ecx
mov dword [esp + 0x24], eax
call sub.MSVCRT.dll_memcpy
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x44]
add esp, 0xc
or dword [esp + 0x18], 0x80
jmp 0x40754f
cmp dword [esp + 0x48], 1
movzx edx, byte [ebx - 1]
mov dword [esp + 0x18], edx
jle 0x40754f
mov edx, dword [esp + 0x120]
mov edi, dword [edx + 0x40]
or edi, dword [esp + 0x18]
or edi, dword [esp + 0x68]
mov dword [esp + 0x50], edi
cmp dword [esp + 0x30], 0
jne 0x4075a9
test ecx, ecx
jge 0x4075a9
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x40]
push eax
mov eax, dword [esp + 0x1c]
add esi, 1
push esi
lea ecx, [esp + 0xc0]
push ecx
movzx ecx, byte [ebp]
push edx
push eax
push ecx
mov eax, dword [esp + 0x138]
call fcn.00405790
add esp, 0x18
test eax, eax
je 0x40759d
mov dword [esp + 0x30], 1
mov dword [esp + 0x20], 0
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x10]
mov dl, byte [ebp]
cmp dl, 0xe
je 0x4075c8
cmp dl, 0xd
je 0x4075c8
mov dword [esp + 0x28], 0xffffffff
mov dword [esp + 0x24], 0xffffffff
jmp 0x4075d8
movzx edx, byte [ebp + 1]
mov dword [esp + 0x24], edx
movzx edx, byte [ebp + 2]
mov dword [esp + 0x28], edx
test ecx, ecx
mov edi, ebx
mov dword [esp + 0x14], ebp
je 0x40796d
cmp ecx, 1
je 0x4075f9
mov edx, dword [esp + 0x120]
mov dword [edx + 0x44], 1
mov ebx, dword [esp + 0x1c]
add eax, ebx
cmp dword [esp + 0x48], 0
mov dword [esp + 0x20], eax
jne 0x407655
cmp ecx, 0xffffffff
jne 0x407620
add al, 0x19
mov byte [ebp], al
add ebp, 1
mov dword [esp + 0x14], ebp
jmp 0x4077cf
cmp ecx, 1
jne 0x407636
add al, 0x1d
mov byte [ebp], al
add ebp, 1
mov dword [esp + 0x14], ebp
jmp 0x4077cf
add al, 0x1f
mov byte [ebp], al
add ebp, 1
mov eax, ecx
sar eax, 8
mov byte [ebp], al
mov byte [ebp + 1], cl
add ebp, 2
mov dword [esp + 0x14], ebp
jmp 0x4077cf
cmp dword [esp + 0x48], 1
jne 0x4076a0
cmp ecx, 0xffffffff
jne 0x407672
add al, 0x1b
mov byte [ebp], al
add ebp, 1
mov dword [esp + 0x14], ebp
jmp 0x4077cf
cmp ecx, 1
mov dword [esp + 0x14], edi
je 0x40796d
add al, 0x1f
mov byte [edi], al
lea edx, [ecx - 1]
lea eax, [edi + 1]
sar edx, 8
sub cl, 1
mov byte [eax], dl
mov byte [eax + 1], cl
add eax, 2
mov dword [esp + 0x14], eax
jmp 0x4077cf
mov edx, dword [esp + 0x48]
add bl, 0x21
mov byte [ebp], bl
add ebp, 1
mov ebx, edx
sar ebx, 8
mov byte [ebp], bl
mov byte [ebp + 1], dl
add ebp, 2
test ecx, ecx
mov dword [esp + 0x14], ebp
jge 0x407737
cmp dword [esp + 0x40], 0
je 0x407704
cmp dword [esp + 0x18], 0x80
jl 0x407704
mov esi, dword [esp + 0x18]
and esi, 7
push esi
lea eax, [esp + 0xbc]
push eax
push ebp
call sub.MSVCRT.dll_memcpy
mov eax, dword [esp + 0x2c]
add ebp, esi
add al, 0x19
add esp, 0xc
mov byte [ebp], al
add ebp, 1
mov dword [esp + 0x14], ebp
jmp 0x4077cf
mov cl, byte [esp + 0x18]
mov byte [ebp], cl
mov ecx, dword [esp + 0x24]
add ebp, 1
test ecx, ecx
jl 0x407726
mov dl, byte [esp + 0x28]
mov byte [ebp], cl
add ebp, 1
mov byte [ebp], dl
add ebp, 1
add al, 0x19
mov byte [ebp], al
add ebp, 1
mov dword [esp + 0x14], ebp
jmp 0x4077cf
cmp ecx, edx
je 0x4077cf
cmp dword [esp + 0x40], 0
je 0x407771
cmp dword [esp + 0x18], 0x80
jl 0x407771
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
and edi, 7
push edi
lea eax, [esp + 0xbc]
push eax
push esi
call sub.MSVCRT.dll_memcpy
add esp, 0xc
add esi, edi
jmp 0x407784
mov eax, dword [esp + 0x14]
mov cl, byte [esp + 0x18]
mov byte [eax], cl
add eax, 1
mov dword [esp + 0x14], eax
mov esi, eax
mov eax, dword [esp + 0x24]
test eax, eax
jl 0x40779a
mov dl, byte [esp + 0x28]
mov byte [esi], al
add esi, 1
mov byte [esi], dl
add esi, 1
mov ecx, dword [esp + 0x38]
sub ecx, dword [esp + 0x48]
mov al, byte [esp + 0x20]
cmp ecx, 1
mov dword [esp + 0x38], ecx
jne 0x4077b7
add al, 0x1d
mov byte [esi], al
add esi, ecx
jmp 0x4077cb
add al, 0x1f
mov byte [esi], al
add esi, 1
mov eax, ecx
sar eax, 8
mov byte [esi], al
mov byte [esi + 1], cl
add esi, 2
mov dword [esp + 0x14], esi
cmp dword [esp + 0x40], 0
je 0x407805
cmp dword [esp + 0x18], 0x80
jl 0x407805
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
and esi, 7
push esi
lea ecx, [esp + 0xbc]
push ecx
push edi
call sub.MSVCRT.dll_memcpy
add esp, 0xc
add edi, esi
mov dword [esp + 0x14], edi
jmp 0x407816
mov eax, dword [esp + 0x14]
mov dl, byte [esp + 0x18]
mov byte [eax], dl
add eax, 1
mov dword [esp + 0x14], eax
cmp dword [esp + 0x24], 0
jl 0x407837
mov eax, dword [esp + 0x14]
mov cl, byte [esp + 0x24]
mov dl, byte [esp + 0x28]
mov byte [eax], cl
add eax, 1
mov byte [eax], dl
add eax, 1
mov dword [esp + 0x14], eax
mov ebx, dword [esp + 0x14]
mov edi, dword [esp + 0x44]
mov esi, dword [esp + 0x10]
cmp dword [esp + 0x30], 0
je 0x407971
mov al, byte [edi]
cmp al, 0x21
je 0x40785c
cmp al, 0x3b
je 0x40785c
cmp al, 0x2e
jne 0x40786c
movzx eax, al
movzx ecx, byte [eax + 0x429f80]
add edi, ecx
mov dword [esp + 0x44], edi
mov eax, ebx
sub eax, edi
test eax, eax
mov dword [esp + 0x3c], eax
jle 0x407971
movzx eax, byte [edi]
add eax, 0xffffffe7
cmp eax, 0x20
ja case.0x407892.26
movzx edx, byte [eax + 0x408ea8]
jmp dword [edx*4 + 0x408e74]
mov byte [edi], 0x22
mov esi, dword [esp + 0x10]
jmp 0x407971
mov byte [edi], 0x23
mov esi, dword [esp + 0x10]
jmp 0x407971
mov byte [edi], 0x24
mov esi, dword [esp + 0x10]
jmp 0x407971
mov byte [edi], 0x25
mov esi, dword [esp + 0x10]
jmp 0x407971
mov byte [edi], 0x3c
mov esi, dword [esp + 0x10]
jmp 0x407971
mov byte [edi], 0x3d
mov esi, dword [esp + 0x10]
jmp 0x407971
mov byte [edi], 0x3e
mov esi, dword [esp + 0x10]
jmp 0x407971
mov byte [edi], 0x3f
mov esi, dword [esp + 0x10]
jmp 0x407971
mov byte [edi], 0x2f
mov esi, dword [esp + 0x10]
jmp 0x407971
mov byte [edi], 0x30
mov esi, dword [esp + 0x10]
jmp 0x407971
mov byte [edi], 0x31
mov esi, dword [esp + 0x10]
jmp 0x407971
mov byte [edi], 0x32
mov esi, dword [esp + 0x10]
jmp 0x407971
mov eax, dword [esp + 0x3c]
push eax
push edi
add edi, 3
push edi
call sub.MSVCRT.dll_memmove
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x48]
mov byte [edx], 0x57
mov byte [ebx + 3], 0x4f
add ecx, 3
add ebx, 3
mov byte [ebx + 2], cl
add ebx, 1
mov eax, ecx
sar eax, 8
mov byte [ebx], al
mov edx, dword [esp + 0x50]
mov byte [edx + 1], al
mov eax, dword [esp + 0x50]
add esp, 0xc
add ebx, 2
mov byte [eax + 2], cl
mov esi, dword [esp + 0x10]
mov dword [esp + 0x14], ebx
jmp 0x407971
mov dword [esp + 0x14], ebp
mov ebx, dword [esp + 0x14]
mov ecx, dword [esp + 0xa4]
mov eax, dword [esp + 0x120]
or dword [eax + 0x40], ecx
mov edi, dword [esp + 0xcc]
mov edx, dword [esp + 0xb4]
mov dword [esp + 0x1c], 0
mov ebp, dword [esp + 0x1c]
add esi, 1
xor ecx, ecx
jmp 0x405f45
mov edi, dword [esp + 0x120]
mov eax, dword [esp + 0x2c]
mov ecx, dword [edi + 0x20]
add esi, 1
xor edx, edx
mov dword [esp + 0x10], esi
cmp byte [esi], 0x3f
mov dword [esp + 0x3c], eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x18], 0x59
mov dword [esp + 0x64], ecx
jne 0x4083e8
add esi, 1
mov dword [esp + 0x10], esi
mov al, byte [esi]
movzx ecx, al
add ecx, 0xffffffdf
cmp ecx, 0x31
ja case.0x4079f9.34
movzx ecx, byte [ecx + 0x408f04]
jmp dword [ecx*4 + 0x408ecc]
add esi, 1
mov dword [esp + 0x10], esi
mov al, byte [esi]
test al, al
je 0x407a21
lea ecx, [ecx]
cmp al, 0x29
je 0x407a44
add esi, 1
mov dword [esp + 0x10], esi
mov al, byte [esi]
test al, al
jne 0x407a10
mov eax, dword [esp + 0x110]
mov dword [eax], 0x12
mov eax, dword [esp + 0x10c]
pop edi
mov dword [eax], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xf0
ret
cmp byte [esi], 0
je 0x407a21
mov edi, dword [esp + 0xcc]
mov edx, dword [esp + 0xb4]
add esi, 1
xor ecx, ecx
jmp 0x405f45
add esi, 1
mov dword [esp + 0x18], 0x58
mov dword [esp + 0x10], esi
jmp 0x407c55
cmp byte [esi + 1], 0x3f
mov dword [esp + 0x18], 0x5a
jne 0x407a9e
mov al, byte [esi + 2]
cmp al, 0x3d
je 0x407c55
cmp al, 0x21
je 0x407c55
cmp al, 0x3c
je 0x407c55
mov byte [ebx + 3], 0x5e
mov esi, dword [esp + 0x10]
mov al, byte [esi + 1]
cmp al, 0x52
mov dword [esp + 0x30], 3
jne 0x407ad4
cmp byte [esi + 2], 0x26
lea ecx, [esi + 2]
jne 0x407ad4
mov dword [esp + 0x10], ecx
mov byte [ebx + 3], 0x5f
mov esi, dword [esp + 0x10]
mov dword [esp + 0x24], 0xffffffff
jmp 0x407b02
cmp al, 0x3c
jne 0x407ae9
add esi, 1
mov dword [esp + 0x24], 0x3e
mov dword [esp + 0x10], esi
jmp 0x407b02
cmp al, 0x27
jne 0x407afe
add esi, 1
mov dword [esp + 0x24], 0x27
mov dword [esp + 0x10], esi
jmp 0x407b02
mov dword [esp + 0x24], edx
movzx eax, byte [esi + 1]
mov ecx, dword [edi + 0xc]
add esi, 1
test byte [eax + ecx], 0x10
je 0x408bc3
mov dword [esp + 0x10], esi
movzx eax, byte [esi]
test byte [ecx + eax], 0x10
mov dword [esp + 0x20], edx
mov dword [esp + 0x28], esi
je 0x407b62
or edi, 0xffffffff
mov edi, edi
test edx, edx
jl 0x407b52
test byte [eax + 0x429b40], 4
je 0x407b4a
lea edx, [edx + edx*4]
lea eax, [eax + edx*2 - 0x30]
mov dword [esp + 0x20], eax
jmp 0x407b4e
mov dword [esp + 0x20], edi
mov edx, dword [esp + 0x20]
add esi, 1
mov dword [esp + 0x10], esi
movzx eax, byte [esi]
test byte [eax + ecx], 0x10
jne 0x407b30
mov eax, dword [esp + 0x24]
mov edi, esi
sub edi, dword [esp + 0x28]
test eax, eax
jle 0x407b82
movzx ecx, byte [esi]
add esi, 1
cmp ecx, eax
mov dword [esp + 0x10], esi
jne 0x408be6
mov dl, byte [esi]
add esi, 1
cmp dl, 0x29
mov dword [esp + 0x10], esi
jne 0x408be6
cmp dword [esp + 0x124], 0
jne 0x407c4e
mov eax, dword [esp + 0x120]
cmp dword [eax + 0x28], 0
mov ebp, dword [eax + 0x24]
mov dword [esp + 0x1c], 0
jle 0x407bf0
mov esi, dword [esp + 0x1c]
mov edi, edi
mov ecx, dword [esp + 0x28]
push edi
lea eax, [ebp + 2]
push eax
push ecx
call sub.MSVCRT.dll_strncmp
add esp, 0xc
test eax, eax
je 0x407bec
mov eax, dword [esp + 0x120]
add ebp, dword [eax + 0x2c]
add esi, 1
cmp esi, dword [eax + 0x28]
mov dword [esp + 0x1c], esi
jl 0x407bc0
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x120]
cmp edx, dword [eax + 0x28]
jge 0x407c14
movzx eax, byte [ebp + 1]
mov ah, byte [ebp]
mov byte [ebx + 5], al
mov ecx, eax
sar ecx, 8
mov byte [ebx + 4], cl
jmp 0x407c4e
mov edx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x28]
mov eax, dword [eax + 0x30]
shr edx, 3
and edx, 1
push edx
push ebp
mov ebx, edi
mov ecx, esi
call fcn.00404da0
add esp, 8
test eax, eax
jle 0x407d83
mov ecx, dword [esp + 0x14]
mov edx, eax
sar edx, 8
mov byte [ecx + 4], dl
mov byte [ecx + 5], al
mov ebx, dword [esp + 0x14]
mov edi, dword [esp + 0x120]
mov ecx, dword [esp + 0x18]
xor eax, eax
cmp ecx, 0x57
setl al
mov byte [ebx], cl
mov ebp, dword [edi + 0x40]
mov dword [esp + 0x44], ebx
sub eax, 1
and eax, ebx
mov dword [esp + 0x1c], eax
xor eax, eax
cmp ecx, 0x54
mov dword [esp + 0x6c], eax
je 0x407c83
cmp ecx, 0x55
jne 0x407c88
mov eax, 1
mov ecx, dword [esp + 0x124]
neg ecx
sbb ecx, ecx
lea edx, [esp + 0x6c]
and ecx, edx
push ecx
mov ecx, dword [esp + 0x120]
push edi
push ecx
lea edx, [esp + 0x7c]
push edx
mov edx, dword [esp + 0x40]
lea ecx, [esp + 0x88]
push ecx
push edx
push eax
mov eax, dword [esp + 0x12c]
push eax
mov eax, dword [esp + 0x4c]
lea ecx, [esp + 0x30]
push ecx
mov ecx, dword [esp + 0x60]
lea edx, [esp + 0x68]
push edx
and eax, 7
push eax
push ecx
call fcn.00408fb0
add esp, 0x30
test eax, eax
je 0x408d79
mov edi, dword [esp + 0x18]
cmp edi, 0x5a
jne 0x407d23
mov eax, ebx
xor esi, esi
xor edx, edx
mov dh, byte [eax + 1]
add esi, 1
mov dl, byte [eax + 2]
add eax, edx
cmp byte [eax], 0x4f
jne 0x407cf2
cmp byte [ebx + 3], 0x60
jne 0x408400
cmp esi, 1
jg 0x408d08
mov dword [esp + 0x18], 0x60
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x70]
mov esi, dword [esp + 0x10]
cmp byte [esi], 0x29
jne 0x408d26
mov edx, dword [esp + 0x124]
test edx, edx
je 0x408424
mov eax, dword [esp + 0x6c]
add ebx, 1
add eax, 0xfffffffa
add dword [edx], eax
mov byte [ebx], 0
mov byte [ebx + 1], 3
mov byte [ebx + 2], 0x4f
add ebx, 2
add ebx, 1
mov byte [ebx], 0
mov byte [ebx + 1], 3
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x70]
mov eax, dword [esp + 0x78]
add ebx, 2
mov dword [esp + 0x14], ebx
jmp 0x40842e
cmp dword [esp + 0x24], 0
jne 0x408c0c
cmp byte [ebp], 0x52
jne 0x407de0
xor ecx, ecx
lea eax, [ecx + 1]
cmp edi, eax
jle 0x407dc3
lea ecx, [ecx]
movzx edx, byte [eax + ebp]
test byte [edx + 0x429b40], 4
je 0x408c1e
add eax, 1
cmp eax, edi
lea ecx, [ecx + ecx*4]
lea ecx, [edx + ecx*2 - 0x30]
jl 0x407da0
test ecx, ecx
jne 0x407dc8
mov ecx, 0xffff
mov eax, dword [esp + 0x14]
mov edx, ecx
sar edx, 8
mov byte [eax + 3], 0x5f
mov byte [eax + 4], dl
mov byte [eax + 5], cl
jmp 0x407c4a
cmp edi, 6
jne 0x407e0d
push edi
push str.DEFINE
push ebp
call sub.MSVCRT.dll_strncmp
add esp, 0xc
test eax, eax
jne 0x407e0d
mov eax, dword [esp + 0x14]
mov byte [eax + 3], 0x60
mov dword [esp + 0x30], 1
jmp 0x407c4a
mov eax, dword [esp + 0x20]
test eax, eax
jg 0x407c3b
mov edx, dword [esp + 0x110]
neg eax
sbb eax, eax
and eax, 0xffffffec
add eax, 0x23
mov dword [edx], eax
jmp 0x408d79
add esi, 1
mov dword [esp + 0x18], 0x52
mov dword [esp + 0x10], esi
jmp 0x407c55
add esi, 1
mov dword [esp + 0x18], 0x53
mov dword [esp + 0x10], esi
jmp 0x407c55
mov cl, byte [esi + 1]
cmp cl, 0x21
je 0x407f37
cmp cl, 0x3d
je 0x407f23
mov edx, dword [edi + 0xc]
movzx ecx, cl
test byte [ecx + edx], 0x10
je 0x408c30
mov ecx, dword [edi + 0xc]
sub al, 0x3c
neg al
sbb eax, eax
add esi, 1
mov dword [esp + 0x10], esi
movzx edx, byte [esi]
and eax, 0xffffffe9
add eax, 0x3e
test byte [edx + ecx], 0x10
mov dword [esp + 0x28], esi
je 0x407eb1
add esi, 1
mov dword [esp + 0x10], esi
movzx edx, byte [esi]
test byte [edx + ecx], 0x10
jne 0x407ea1
mov edi, esi
sub edi, dword [esp + 0x28]
cmp dword [esp + 0x124], 0
mov dword [esp + 0x24], edi
je 0x408046
movzx ecx, byte [esi]
cmp ecx, eax
jne 0x408c9c
mov eax, dword [esp + 0x120]
cmp dword [eax + 0x28], 0x2710
jge 0x408cbf
lea ecx, [edi + 3]
cmp ecx, dword [eax + 0x2c]
jle 0x4081cf
cmp edi, 0x20
mov dword [eax + 0x2c], ecx
jle 0x4081cf
mov eax, dword [esp + 0x110]
mov dword [eax], 0x30
mov eax, dword [esp + 0x10c]
pop edi
mov dword [eax], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xf0
ret
add esi, 2
mov dword [esp + 0x18], 0x54
mov dword [esp + 0x10], esi
jmp 0x407c55
add esi, 2
mov dword [esp + 0x18], 0x55
mov dword [esp + 0x10], esi
jmp 0x407c55
add esi, 1
mov dword [esp + 0x18], 0x57
mov dword [esp + 0x10], esi
jmp 0x407c55
mov byte [ebx], 0x4d
mov esi, dword [esp + 0x10]
add esi, 1
mov dword [esp + 0x10], esi
movzx ecx, byte [esi]
mov dword [esp + 0x60], ebx
mov edx, 4
add ebx, 1
xor eax, eax
test byte [ecx + 0x429b40], dl
mov dword [esp + 0xa8], 1
je 0x407faa
add esi, 1
lea eax, [eax + eax*4]
lea eax, [ecx + eax*2 - 0x30]
mov dword [esp + 0x10], esi
movzx ecx, byte [esi]
test byte [ecx + 0x429b40], dl
jne 0x407f91
cmp byte [esi], 0x29
jne 0x408c56
cmp eax, 0xff
jg 0x408c79
mov byte [ebx], al
mov ecx, dword [esp + 0x10]
sub ecx, dword [edi + 0x18]
add ebx, 1
add ecx, 1
sar ecx, 8
mov byte [ebx], cl
mov al, byte [esp + 0x10]
sub al, byte [edi + 0x18]
mov byte [ebx + 2], 0
add al, 1
mov byte [ebx + 1], al
mov byte [ebx + 3], 0
add ebx, edx
mov dword [esp + 0x1c], 0
jmp 0x406358
add esi, 1
mov dword [esp + 0x10], esi
mov al, byte [esi]
cmp al, 0x3d
je 0x408031
cmp al, 0x3e
je 0x408031
cmp al, 0x3c
je case.0x4079f9.39
mov eax, dword [esp + 0x110]
mov dword [eax], 0x29
mov eax, dword [esp + 0x10c]
pop edi
mov dword [eax], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xf0
ret
xor ecx, ecx
cmp al, 0x3e
sete cl
mov dword [esp + 0x24], ecx
mov ecx, 0x29
jmp 0x4085fb
mov eax, dword [esp + 0x120]
mov ebp, dword [eax + 0x24]
mov eax, dword [eax + 0x28]
test eax, eax
mov dword [esp + 0x30], ebp
mov dword [esp + 0x1c], 0
mov dword [esp + 0xa4], eax
jle 0x408191
mov edi, edi
cmp edi, 4
mov edx, dword [esp + 0x28]
mov eax, edi
lea ecx, [ebp + 2]
jb 0x408098
mov edi, edi
mov edi, dword [edx]
cmp edi, dword [ecx]
jne 0x4080a0
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x408080
mov edi, dword [esp + 0x24]
test eax, eax
je 0x40810d
movzx edi, byte [edx]
movzx ebp, byte [ecx]
sub edi, ebp
jne 0x4080ef
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x408105
movzx edi, byte [edx]
movzx ebp, byte [ecx]
sub edi, ebp
jne 0x4080ef
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x408105
movzx edi, byte [edx]
movzx ebp, byte [ecx]
sub edi, ebp
jne 0x4080ef
sub eax, 1
add ecx, 1
add edx, 1
test eax, eax
je 0x408105
movzx edi, byte [edx]
movzx edx, byte [ecx]
sub edi, edx
je 0x408105
mov ebp, dword [esp + 0x30]
test edi, edi
mov edi, dword [esp + 0x24]
mov eax, 1
jg 0x40810f
or eax, 0xffffffff
jmp 0x40810f
mov ebp, dword [esp + 0x30]
mov edi, dword [esp + 0x24]
xor eax, eax
test eax, eax
jne 0x408146
cmp byte [edi + ebp + 2], al
jne 0x40816c
test dword [esp + 0x2c], 0x80000
jne 0x408148
mov ecx, dword [esp + 0x110]
mov eax, dword [esp + 0x10c]
pop edi
mov dword [ecx], 0x2b
mov dword [eax], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xf0
ret
jl 0x40816c
mov ecx, dword [esp + 0x120]
mov eax, dword [esp + 0x1c]
add ebp, dword [ecx + 0x2c]
add eax, 1
cmp eax, dword [ecx + 0x28]
mov dword [esp + 0x30], ebp
mov dword [esp + 0x1c], eax
jl 0x408070
jmp 0x408191
mov ecx, dword [esp + 0xa4]
mov eax, dword [esp + 0x120]
mov eax, dword [eax + 0x2c]
sub ecx, dword [esp + 0x1c]
imul ecx, eax
push ecx
add eax, ebp
push ebp
push eax
call sub.MSVCRT.dll_memmove
add esp, 0xc
mov eax, dword [esp + 0x120]
mov ecx, dword [eax + 0x30]
add ecx, 1
sar ecx, 8
mov byte [ebp], cl
mov dl, byte [eax + 0x30]
mov eax, dword [esp + 0x28]
push edi
push eax
lea ecx, [ebp + 2]
add dl, 1
push ecx
mov byte [ebp + 1], dl
call sub.MSVCRT.dll_memcpy
mov eax, dword [esp + 0x12c]
mov byte [edi + ebp + 2], 0
mov esi, dword [esp + 0x1c]
add esp, 0xc
add esi, 1
add dword [eax + 0x28], 1
mov dword [esp + 0x10], esi
mov eax, dword [esp + 0x120]
add dword [eax + 0x30], 1
mov ecx, dword [eax + 0x30]
sar ecx, 8
mov byte [ebx + 3], cl
mov dl, byte [eax + 0x30]
mov byte [ebx + 4], dl
mov dword [esp + 0x30], 2
mov edi, eax
jmp 0x407c55
mov ecx, 0x29
mov dword [esp + 0x24], 1
jmp 0x4085fb
add esi, 1
mov dword [esp + 0x10], esi
movzx eax, byte [esi]
xor ecx, ecx
mov dl, 4
test byte [eax + 0x429b40], dl
mov dword [esp + 0x20], ecx
je 0x40824d
nop
add esi, 1
lea ecx, [ecx + ecx*4]
lea ecx, [eax + ecx*2 - 0x30]
mov dword [esp + 0x10], esi
movzx eax, byte [esi]
test byte [eax + 0x429b40], dl
jne 0x408230
mov dword [esp + 0x20], ecx
cmp byte [esi], 0x29
je 0x4086f3
mov edx, dword [esp + 0x110]
mov eax, dword [esp + 0x10c]
pop edi
mov dword [edx], 0x1d
mov dword [eax], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xf0
ret
xor ebp, ebp
cmp al, 0x29
mov dword [esp + 0x24], ebp
mov dword [esp + 0x3c], edx
lea ecx, [esp + 0x3c]
je 0x4082fa
jmp 0x408290
cmp al, 0x3a
je 0x4082f2
movzx eax, al
add esi, 1
sub eax, 0x2d
cmp eax, 0x4b
mov dword [esp + 0x10], esi
ja case.0x4082b1.46
movzx edx, byte [eax + 0x408f5c]
jmp dword [edx*4 + 0x408f38]
lea ecx, [esp + 0x24]
jmp 0x4082ec
or dword [ecx], 0x80000
or dword [edi + 0x3c], 0x8000000
jmp 0x4082ec
or dword [ecx], 1
jmp 0x4082ec
or dword [ecx], 2
jmp 0x4082ec
or dword [ecx], 4
jmp 0x4082ec
or dword [ecx], 8
jmp 0x4082ec
or dword [ecx], 0x200
jmp 0x4082ec
or dword [ecx], 0x40
mov al, byte [esi]
cmp al, 0x29
jne 0x408290
mov edx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x24]
mov edi, dword [esp + 0x2c]
or edx, edi
not ebp
and edx, ebp
cmp byte [esi], 0x29
mov eax, edx
mov dword [esp + 0x3c], eax
jne 0x4083d4
mov edx, dword [esp + 0x120]
mov ecx, dword [edx + 0x14]
add ecx, 3
cmp ebx, ecx
jne 0x40835f
mov ecx, dword [esp + 0x124]
test ecx, ecx
je 0x408334
cmp dword [ecx], 6
jne 0x40835f
mov edi, dword [esp + 0xcc]
mov dword [esp + 0x1c], 0
mov ebp, dword [esp + 0x1c]
mov dword [edx + 0x3c], eax
mov edx, dword [esp + 0xb4]
add esi, 1
mov dword [esp + 0x2c], eax
xor ecx, ecx
jmp 0x405f45
mov edx, eax
xor edx, edi
test dl, 7
je 0x408380
mov byte [ebx], 0x13
mov cl, al
add ebx, 1
and cl, 7
mov byte [ebx], cl
mov esi, dword [esp + 0x10]
add ebx, 1
mov dword [esp + 0x14], ebx
mov edx, dword [esp + 0x104]
mov edi, dword [esp + 0xcc]
mov ecx, eax
shr ecx, 9
and ecx, 1
mov dword [edx], eax
mov edx, dword [esp + 0xb4]
mov dword [esp + 0x2c], eax
mov dword [esp + 0xc8], ecx
and eax, 1
xor ecx, 1
shl eax, 8
mov dword [esp + 0x1c], 0
mov ebp, dword [esp + 0x1c]
mov dword [esp + 0xc0], ecx
add esi, 1
mov dword [esp + 0x68], eax
xor ecx, ecx
jmp 0x405f45
add esi, 1
mov dword [esp + 0x18], 0x58
mov dword [esp + 0x10], esi
jmp 0x407c4e
test eax, 0x1000
je 0x4081da
mov dword [esp + 0x18], 0x58
jmp 0x407c55
cmp esi, 2
jg 0x408d17
cmp esi, 1
jne 0x407d23
or ecx, 0xffffffff
or eax, ecx
mov dword [esp + 0x70], ecx
mov dword [esp + 0x78], eax
jmp 0x407d2b
mov edx, dword [esp + 0x44]
mov dword [esp + 0x14], edx
mov ebx, edx
cmp edi, 0x60
je 0x406360
cmp edi, 0x57
mov edx, dword [esp + 0x50]
mov dword [esp + 0x4c], edx
mov edx, dword [esp + 0x34]
mov dword [esp + 0x5c], edx
mov dword [esp + 0x9c], 0
jl 0x4084c3
cmp edx, 0xfffffffe
jne 0x40848b
test eax, eax
jl 0x408479
mov dword [esp + 0x34], eax
mov dword [esp + 0x9c], 1
mov dword [esp + 0x5c], 0xffffffff
jmp 0x40849b
mov dword [esp + 0x34], 0xffffffff
mov dword [esp + 0x5c], 0xffffffff
jmp 0x40849b
test eax, eax
jl 0x40849b
test ecx, ecx
jge 0x4084a3
or eax, ebp
mov ecx, eax
mov dword [esp + 0x70], ecx
test ecx, ecx
jl 0x406360
mov ebp, dword [esp + 0x1c]
mov edi, dword [esp + 0xcc]
mov edx, dword [esp + 0xb4]
mov dword [esp + 0x50], ecx
add esi, 1
xor ecx, ecx
jmp 0x405f45
cmp edi, 0x52
jne 0x406360
test ecx, ecx
jl 0x406360
mov ebp, dword [esp + 0x1c]
mov edi, dword [esp + 0xcc]
mov edx, dword [esp + 0xb4]
mov dword [esp + 0x50], ecx
add esi, 1
xor ecx, ecx
jmp 0x405f45
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x120]
mov edx, dword [ecx + 0x30]
mov edi, dword [esp + 0x110]
push 0
push eax
push edx
lea eax, [esp + 0x1c]
push edi
push eax
mov dword [esp + 0x88], esi
call fcn.00404770
add esp, 0x14
cmp dword [edi], 0
jne 0x408d79
test eax, eax
jge 0x408926
mov esi, eax
neg esi
cmp esi, 0x14
jne 0x408587
mov esi, dword [esp + 0x10]
cmp byte [esi + 1], 0x5c
jne 0x408567
cmp byte [esi + 2], 0x45
jne 0x408567
mov edi, dword [esp + 0xcc]
mov edx, dword [esp + 0xb4]
add esi, 2
add esi, 1
xor ecx, ecx
jmp 0x405f45
mov edi, dword [esp + 0xcc]
mov edx, dword [esp + 0xb4]
add esi, 1
mov dword [esp + 0x58], 1
xor ecx, ecx
jmp 0x405f45
cmp esi, 0x13
je 0x4089b8
mov ecx, dword [esp + 0x34]
cmp ecx, 0xfffffffe
jne 0x4085aa
cmp esi, 4
jle 0x4085aa
cmp esi, 0x11
jge 0x4085aa
or ecx, 0xffffffff
mov dword [esp + 0x34], ecx
cmp esi, 0x15
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x4c], ecx
jne 0x40883e
mov ebp, dword [esp + 0x10]
mov cl, byte [ebp + 1]
add ebp, 1
cmp cl, 0x3c
je 0x4085d7
cmp cl, 0x27
jne 0x40883e
mov edi, dword [esp + 0x120]
mov esi, ebp
mov dword [esp + 0x10], esi
mov cl, byte [esi]
sub cl, 0x3c
neg cl
mov dword [esp + 0x24], 0
sbb ecx, ecx
and ecx, 0xffffffe9
add ecx, 0x3e
mov eax, dword [edi + 0xc]
add esi, 1
mov dword [esp + 0x10], esi
movzx edx, byte [esi]
test byte [edx + eax], 0x10
mov dword [esp + 0x28], esi
je 0x408622
add esi, 1
mov dword [esp + 0x10], esi
movzx edx, byte [esi]
test byte [edx + eax], 0x10
jne 0x408612
mov edi, esi
sub edi, dword [esp + 0x28]
xor edx, edx
cmp dword [esp + 0x124], edx
je 0x408650
movzx eax, byte [esi]
cmp eax, ecx
jne 0x408c9c
cmp edi, 0x20
jg 0x408d49
mov dword [esp + 0x20], edx
jmp 0x4086e8
mov eax, dword [esp + 0x120]
cmp dword [eax + 0x28], edx
mov ebp, dword [eax + 0x24]
mov dword [esp + 0x1c], edx
jle 0x408695
mov esi, edx
mov edx, dword [esp + 0x28]
push edi
lea ecx, [ebp + 2]
push ecx
push edx
call sub.MSVCRT.dll_strncmp
add esp, 0xc
test eax, eax
je 0x408691
mov eax, dword [esp + 0x120]
add ebp, dword [eax + 0x2c]
add esi, 1
cmp esi, dword [eax + 0x28]
mov dword [esp + 0x1c], esi
jl 0x408665
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x120]
cmp eax, dword [ecx + 0x28]
jge 0x4086b2
movzx edx, byte [ebp + 1]
mov dh, byte [ebp]
mov dword [esp + 0x20], edx
jmp 0x4086e8
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x120]
shr eax, 3
and eax, 1
push eax
mov eax, dword [edx + 0x30]
push ecx
mov ebx, edi
mov ecx, esi
call fcn.00404da0
add esp, 8
test eax, eax
mov dword [esp + 0x20], eax
jle 0x408c0c
mov ebx, dword [esp + 0x14]
cmp dword [esp + 0x24], 0
je 0x40884e
cmp dword [esp + 0x124], 0
mov eax, dword [esp + 0x120]
mov eax, dword [eax + 0x14]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x24], eax
jne 0x4087c4
cmp dword [esp + 0x20], 0
mov edi, dword [esp + 0x120]
mov byte [ebx], 0
je 0x408738
mov esi, dword [esp + 0x20]
mov edx, dword [esp + 0x40]
mov eax, dword [edi + 0x14]
call fcn.00405270
mov dword [esp + 0x24], eax
test eax, eax
jne 0x408794
mov ecx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x20]
shr ecx, 3
and ecx, 1
push ecx
mov ecx, dword [esp + 0x14]
push eax
mov eax, dword [edi + 0x30]
call fcn.00404da0
add esp, 8
test eax, eax
jl 0x408c1e
mov eax, dword [edi + 0x14]
mov edx, ebx
lea ecx, [eax + edx]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x14]
mov edx, ecx
sub edx, eax
mov eax, dword [edi + 0x20]
add edx, 4
sar edx, 8
mov byte [eax], dl
sub cl, byte [edi + 0x14]
mov edx, dword [edi + 0x20]
add cl, 4
mov byte [edx + 1], cl
add dword [edi + 0x20], 2
jmp 0x4087bc
xor ecx, ecx
mov ch, byte [eax + 1]
mov cl, byte [eax + 2]
test ecx, ecx
jne 0x4087c4
mov edi, dword [esp + 0x40]
push eax
mov eax, dword [esp + 0x120]
call fcn.00405540
add esp, 4
test eax, eax
jne 0x408d6c
mov eax, dword [esp + 0x24]
mov ebx, dword [esp + 0x14]
mov esi, dword [esp + 0x120]
mov ebp, dword [esp + 0x1c]
mov byte [ebx], 0x57
mov byte [ebx + 1], 0
add ebx, 3
mov cl, 6
mov byte [ebx - 1], cl
mov byte [ebx], 0x4c
mov edx, eax
sub edx, dword [esi + 0x14]
add ebx, 3
sar edx, 8
mov byte [ebx - 2], dl
sub al, byte [esi + 0x14]
add ebx, 3
cmp dword [esp + 0x34], 0xfffffffe
mov byte [ebx - 4], al
mov byte [ebx - 3], 0x4f
mov byte [ebx - 2], 0
mov byte [ebx - 1], cl
mov esi, dword [esp + 0x10]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x6c], 9
jne 0x406364
mov edi, dword [esp + 0xcc]
mov edx, dword [esp + 0xb4]
add esi, 1
mov dword [esp + 0x34], 0xffffffff
xor ecx, ecx
jmp 0x405f45
cmp esi, 0x16
jl 0x4088a7
mov ecx, 0xffffffea
sub ecx, eax
mov dword [esp + 0x20], ecx
cmp dword [esp + 0x34], 0xfffffffe
jne 0x40885d
mov dword [esp + 0x34], 0xffffffff
mov ecx, dword [esp + 0x20]
mov byte [ebx], 0x4b
mov dword [esp + 0x1c], ebx
add ebx, 1
mov eax, ecx
sar eax, 8
mov byte [ebx], al
mov byte [ebx + 1], cl
add ebx, 2
cmp ecx, 0x20
mov dword [esp + 0x14], ebx
mov eax, 1
jge 0x408888
shl eax, cl
mov edx, dword [esp + 0x120]
or dword [edx + 0x38], eax
cmp ecx, dword [edx + 0x34]
jle 0x40635c
mov ecx, dword [esp + 0x20]
mov dword [edx + 0x34], ecx
jmp 0x40635c
cmp esi, 0xd
je 0x4088d0
cmp esi, 0xe
je 0x4088d0
cmp esi, 4
jle 0x4088bf
cmp esi, 0x11
mov dword [esp + 0x1c], ebx
jl 0x4088c7
mov dword [esp + 0x1c], 0
neg al
mov byte [ebx], al
jmp 0x406355
push edi
lea eax, [esp + 0xe0]
push eax
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0xe0]
call fcn.00404b50
add esp, 0xc
test eax, eax
jl 0x408d79
xor edx, edx
cmp esi, 0xe
sete dl
mov dword [esp + 0x1c], ebx
cmp edx, dword [esp + 0xd4]
mov dl, byte [esp + 0xdc]
setne cl
add cl, 0xd
mov byte [ebx], cl
add ebx, 1
mov byte [ebx], al
add ebx, 1
mov byte [ebx], dl
jmp 0x406355
cmp dword [esp + 0x40], 0
je 0x408948
cmp eax, 0x7f
jle 0x408948
lea ecx, [esp + 0xac]
push ecx
push eax
call fcn.00410e50
add esp, 8
jmp 0x4060f0
mov byte [esp + 0xac], al
mov eax, 1
jmp 0x4060f0
movzx ecx, byte [esp + 0xac]
or ecx, dword [esp + 0x68]
cmp eax, 1
mov dword [esp + 0x34], ecx
je 0x40635c
movzx eax, byte [ebx - 1]
mov ecx, dword [esp + 0x120]
or eax, dword [ecx + 0x40]
mov dword [esp + 0x50], eax
jmp 0x40635c
cmp eax, 1
mov dword [esp + 0x5c], ecx
je 0x40899d
cmp dword [esp + 0x68], 0
jne 0x40635c
movzx eax, byte [ebx - 1]
mov ecx, dword [esp + 0x120]
or eax, dword [ecx + 0x40]
or eax, dword [esp + 0x68]
mov dword [esp + 0x50], eax
jmp 0x40635c
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0xcc]
mov edx, dword [esp + 0xb4]
add esi, 1
xor ecx, ecx
jmp 0x405f45
mov edx, dword [esp + 0x110]
mov eax, dword [esp + 0x10c]
pop edi
mov dword [edx], 0x34
mov dword [eax], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xf0
ret
mov eax, dword [esp + 0x110]
mov dword [eax], 0x34
mov eax, dword [esp + 0x10c]
pop edi
mov dword [eax], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xf0
ret
mov ecx, dword [esp + 0x114]
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x118]
mov dword [ecx], edx
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x108]
mov dword [eax], ecx
mov eax, dword [esp + 0x10c]
mov dword [edx], ebx
mov dword [eax], esi
mov eax, dword [esp + 0x124]
test eax, eax
je 0x408a5a
sub ebx, dword [esp + 0xb4]
add dword [eax], ebx
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0xf0
ret
mov cl, byte [esi + 1]
mov edx, dword [esp + 0x110]
mov eax, dword [esp + 0x10c]
sub cl, 0x3a
neg cl
pop edi
sbb ecx, ecx
and ecx, 0x12
add ecx, 0xd
mov dword [edx], ecx
mov dword [eax], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xf0
ret
mov eax, dword [esp + 0x110]
mov dword [eax], 0x1f
mov eax, dword [esp + 0x10c]
pop edi
mov dword [eax], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xf0
ret
mov ecx, dword [esp + 0x110]
mov dword [ecx], 0x1e
jmp 0x408d79
mov edx, dword [esp + 0x110]
mov eax, dword [esp + 0x10c]
pop edi
mov dword [edx], 7
mov dword [eax], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xf0
ret
mov eax, dword [esp + 0x110]
mov dword [eax], 8
mov eax, dword [esp + 0x10c]
pop edi
mov dword [eax], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xf0
ret
mov ecx, dword [esp + 0x110]
mov eax, dword [esp + 0x10c]
pop edi
mov dword [ecx], 6
mov dword [eax], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xf0
ret
mov edx, dword [esp + 0x110]
mov eax, dword [esp + 0x10c]
pop edi
mov dword [edx], 9
mov dword [eax], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xf0
ret
mov eax, dword [esp + 0x110]
mov dword [eax], 0xb
mov eax, dword [esp + 0x10c]
pop edi
mov dword [eax], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xf0
ret
mov ecx, dword [esp + 0x110]
mov eax, dword [esp + 0x10c]
pop edi
mov dword [ecx], 0x37
mov dword [eax], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xf0
ret
mov edx, dword [esp + 0x110]
mov eax, dword [esp + 0x10c]
pop edi
mov dword [edx], 0x32
mov dword [eax], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xf0
ret
mov ecx, dword [esp + 0x110]
mov eax, dword [esp + 0x10c]
pop edi
mov dword [ecx], 0x1c
mov dword [eax], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xf0
ret
mov edx, dword [esp + 0x110]
mov eax, dword [esp + 0x10c]
sub esi, 1
pop edi
mov dword [edx], 0x1a
mov dword [eax], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xf0
ret
mov eax, dword [esp + 0x110]
mov dword [eax], 0xf
jmp 0x408d79
mov ecx, dword [esp + 0x110]
mov dword [ecx], 0xf
jmp 0x408d79
mov eax, dword [esp + 0x110]
mov dword [eax], 0x18
mov eax, dword [esp + 0x10c]
add esi, 1
pop edi
mov dword [eax], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xf0
ret
mov ecx, dword [esp + 0x110]
mov eax, dword [esp + 0x10c]
pop edi
mov dword [ecx], 0x27
mov dword [eax], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xf0
ret
mov edx, dword [esp + 0x110]
mov eax, dword [esp + 0x10c]
pop edi
mov dword [edx], 0x26
mov dword [eax], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xf0
ret
mov ecx, dword [esp + 0x110]
mov eax, dword [esp + 0x10c]
pop edi
mov dword [ecx], 0x2a
mov dword [eax], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xf0
ret
mov edx, dword [esp + 0x110]
mov eax, dword [esp + 0x10c]
pop edi
mov dword [edx], 0x31
mov dword [eax], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xf0
ret
mov eax, dword [esp + 0x110]
mov dword [eax], 0xc
mov eax, dword [esp + 0x10c]
sub esi, 1
pop edi
mov dword [eax], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xf0
ret
mov ecx, dword [esp + 0x110]
mov dword [ecx], 0x36
jmp 0x408d79
mov edx, dword [esp + 0x110]
mov dword [edx], 0x1b
jmp 0x408d79
mov eax, dword [esp + 0x110]
mov dword [eax], 0xe
mov eax, dword [esp + 0x10c]
pop edi
mov dword [eax], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xf0
ret
mov edx, dword [esp + 0x110]
mov eax, dword [esp + 0x10c]
pop edi
mov dword [edx], 0x30
mov dword [eax], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xf0
ret
mov edx, dword [esp + 0x110]
mov dword [edx], 0x28
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x10c]
pop edi
mov dword [eax], esi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xf0
ret