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

Disassembly:
sub esp, 0x294
mov eax, dword [0x42f140]
xor eax, esp
mov dword [esp + 0x290], eax
mov eax, dword [esp + 0x298]
mov edx, dword [esp + 0x2a4]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x29c]
push esi
mov esi, dword [esp + 0x2ac]
mov dword [esp + 0x34], eax
xor eax, eax
push edi
mov edi, dword [esp + 0x2a8]
mov ecx, edi
mov dword [esp + 0x58], edi
mov dword [esp + 0x5c], esi
mov dword [esp + 0x50], eax
mov dword [esp + 0x20], str._KMGT
mov dword [esp + 0x74], ecx
mov dword [esp + 0x60], edx
test dl, 3
jne 0x405729
mov esi, dword [edx]
mov edx, esi
mov eax, esi
not edx
xor eax, 0x25252525
and edx, 0x80808080
sub eax, 0x1010101
test edx, eax
jne 0x405725
mov eax, edi
sub eax, ecx
add eax, 0x200
mov dword [esp + 0x40], eax
nop dword [eax]
nop word [eax + eax]
lea eax, [esi - 0x1010101]
test edx, eax
jne 0x405787
cmp dword [esp + 0x54], 0
mov eax, dword [esp + 0x40]
je 0x4056ee
cmp eax, 4
jl 0x405725
sub eax, 4
mov dword [ecx], esi
mov dword [esp + 0x40], eax
add ecx, 4
mov eax, dword [esp + 0x60]
add eax, 4
mov dword [esp + 0x74], ecx
mov dword [esp + 0x60], eax
mov esi, dword [eax]
mov edx, esi
mov eax, esi
not edx
xor eax, 0x25252525
and edx, 0x80808080
sub eax, 0x1010101
test edx, eax
je 0x4056d0
mov edx, dword [esp + 0x60]
mov al, byte [edx]
cmp al, 0x25
je 0x40578f
test al, al
je 0x407399
mov esi, dword [esp + 0x54]
test esi, esi
je 0x405772
sub ecx, edi
lea eax, [ecx + 1]
cmp eax, 0x200
jl 0x405772
add dword [esp + 0x50], ecx
push ecx
push dword [esp + 0x3c]
push edi
call esi
mov edi, eax
add esp, 0xc
mov dword [esp + 0x58], edi
mov ecx, edi
mov dword [esp + 0x74], ecx
test edi, edi
je 0x4073c9
mov edx, dword [esp + 0x60]
mov edi, dword [esp + 0x74]
mov cl, byte [edx]
mov byte [edi], cl
mov ecx, edi
mov edi, dword [esp + 0x58]
inc ecx
inc edx
jmp 0x405689
mov edx, dword [esp + 0x60]
mov al, byte [edx]
jmp 0x40572f
movsx eax, byte [edx + 1]
inc edx
xor ecx, ecx
mov dword [esp + 0x60], edx
xor esi, esi
mov dword [esp + 0x7c], ecx
or edi, 0xffffffff
mov dword [esp + 0x3c], esi
sub eax, 0x20
mov dword [esp + 0x64], edi
mov dword [esp + 0x40], ecx
cmp eax, 0x3f
ja case.0x4057c7.33
nop dword [eax + eax]
movzx eax, byte [eax + 0x40740c]
jmp dword [eax*4 + 0x4073e8]
or ecx, 1
jmp 0x405815
or ecx, 2
jmp 0x405815
or ecx, 4
jmp 0x405815
or ecx, 8
jmp 0x405815
or ecx, 0x40
jmp 0x405815
test ecx, 0x100
je 0x405807
test ecx, 0x800
je 0x4057ff
or ecx, 0x1000
jmp 0x405815
or ecx, 0x800
jmp 0x405815
or ecx, 0x100
jmp 0x405815
or ecx, 0x400
movsx eax, byte [edx + 1]
inc edx
sub eax, 0x20
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x60], edx
cmp eax, 0x3f
jbe 0x4057c0
jmp 0x405834
or ecx, 0x10
inc edx
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x60], edx
mov al, byte [edx]
cmp al, 0x2a
jne 0x405859
mov esi, dword [esp + 0x5c]
add esi, 4
inc edx
mov dword [esp + 0x5c], esi
mov dword [esp + 0x60], edx
mov eax, dword [esi - 4]
mov dword [esp + 0x3c], eax
mov al, byte [edx]
jmp 0x405886
cmp al, 0x30
jl 0x405882
nop dword [eax]
mov ah, al
cmp ah, 0x39
ja 0x40587a
movzx eax, ah
lea esi, [esi + esi*4]
inc edx
lea esi, [esi - 0x18]
lea esi, [eax + esi*2]
mov al, byte [edx]
cmp al, 0x30
jge 0x405860
mov dword [esp + 0x3c], esi
mov dword [esp + 0x60], edx
mov esi, dword [esp + 0x5c]
mov ecx, esi
cmp al, 0x2e
jne 0x4058d3
mov al, byte [edx + 1]
inc edx
mov dword [esp + 0x60], edx
cmp al, 0x2a
jne 0x4058a7
mov edi, dword [ecx]
add esi, 4
mov al, byte [edx + 1]
inc edx
mov dword [esp + 0x5c], esi
jmp 0x4058cb
xor edi, edi
mov dword [esp + 0x64], edi
cmp al, 0x30
jl 0x4058d3
mov ah, al
cmp ah, 0x39
ja 0x4058cb
movzx eax, ah
lea edi, [edi + edi*4]
inc edx
lea edi, [edi - 0x18]
lea edi, [eax + edi*2]
mov al, byte [edx]
cmp al, 0x30
jge 0x4058b1
mov dword [esp + 0x60], edx
mov dword [esp + 0x64], edi
movsx eax, al
add eax, 0xffffffb7
cmp eax, 0x31
ja case.0x4058e5.74
movzx eax, byte [eax + 0x407460]
jmp dword [eax*4 + 0x40744c]
or dword [esp + 0x7c], 0x200
inc edx
mov dword [esp + 0x60], edx
cmp byte [edx], 0x68
jne case.0x4058e5.74
inc edx
mov dword [esp + 0x60], edx
mov cl, byte [edx]
mov al, byte [0x42f009]
movsx esi, cl
add esi, 0xffffffbf
mov byte [esp + 0x6b], al
cmp esi, 0x37
ja case.0x405924.67
movzx eax, byte [esi + 0x4074c8]
jmp dword [eax*4 + 0x407494]
inc edx
mov dword [esp + 0x60], edx
cmp byte [edx], 0x6c
jne case.0x4058e5.74
or dword [esp + 0x7c], 0x20
jmp case.0x4058e5.106
mov al, byte [edx + 1]
cmp al, 0x36
jne 0x405953
cmp byte [edx + 2], 0x34
jne case.0x4058e5.106
or dword [esp + 0x7c], 0x20
add edx, 3
jmp 0x4058ff
cmp al, 0x33
jne case.0x4058e5.106
cmp byte [edx + 2], 0x32
jne case.0x4058e5.106
add edx, 3
jmp 0x4058ff
mov esi, dword [esp + 0x5c]
mov edx, str.null
add esi, 4
mov dword [esp + 0x5c], esi
mov eax, dword [esi - 4]
test eax, eax
cmovne edx, eax
or esi, 0xffffffff
test edi, edi
mov dword [esp + 0x78], edx
mov ecx, edx
cmovns esi, edi
mov dword [esp + 0x6c], ecx
test dl, 3
je 0x4059a5
test esi, esi
je 0x4059eb
cmp byte [ecx], 0
je 0x4059eb
inc ecx
dec esi
mov dword [esp + 0x6c], ecx
test cl, 3
jne 0x405991
cmp esi, 4
jb 0x4059d7
nop word [eax + eax]
mov eax, dword [ecx]
lea ecx, [eax - 0x1010101]
not eax
and ecx, eax
test ecx, 0x80808080
mov ecx, dword [esp + 0x6c]
jne 0x4059e0
add ecx, 4
sub esi, 4
mov dword [esp + 0x6c], ecx
cmp esi, 4
jae 0x4059b0
test esi, esi
je 0x4059eb
nop dword [eax + eax]
cmp byte [ecx], 0
je 0x4059eb
inc ecx
sub esi, 1
jne 0x4059e0
sub ecx, edx
mov byte [esp + 0x290], 0
xor edi, edi
mov dword [esp + 0x6c], ecx
xor eax, eax
mov dword [esp + 0x80], ecx
mov byte [esp + 0x288], 0
mov dword [esp + 0x48], edi
mov dword [esp + 0x84], eax
jmp 0x406b38
mov eax, dword [esp + 0x5c]
add eax, 4
mov dword [esp + 0x5c], eax
mov al, byte [eax - 4]
mov byte [esp + 0x287], al
jmp 0x406b59
mov esi, dword [esp + 0x5c]
mov ecx, dword [esp + 0x74]
add esi, 4
mov edi, dword [esp + 0x58]
sub ecx, edi
add ecx, dword [esp + 0x50]
inc edx
mov dword [esp + 0x5c], esi
mov eax, dword [esi - 4]
mov dword [eax], ecx
mov ecx, dword [esp + 0x74]
jmp 0x40568d
cmp cl, 0x41
mov eax, str.0123456789ABCDEFXP
mov ecx, str.0123456789abcdefxp
cmovne eax, ecx
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x5c]
add eax, 8
cmp edi, 0xffffffff
mov dword [esp + 0x5c], eax
movsd xmm0, qword [eax - 8]
mov eax, 6
cmove edi, eax
movsd qword [esp + 0x10], xmm0
mov eax, dword [esp + 0x14]
mov ecx, eax
mov esi, dword [esp + 0x10]
mov edx, eax
sar edx, 0x14
and ecx, 0xfffff
mov dword [esp + 0xc], eax
and edx, 0x7ff
shr eax, 0x1f
sub edx, 0x3ff
test eax, eax
mov dword [esp + 8], esi
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x84], ecx
mov dword [esp + 0x48], edx
je 0x405ade
or eax, 0x80
mov dword [esp + 0x7c], eax
lea ecx, [esp + 0x290]
push ecx
push eax
call fcn.00404a30
mov ecx, dword [esp + 0x8c]
add esp, 8
cmp edx, 0xfffffc01
jne 0x405b17
mov eax, esi
or eax, ecx
je 0x405b0f
mov eax, 0xfffffc02
mov dword [esp + 0x48], eax
jmp 0x405b1d
xor eax, eax
mov dword [esp + 0x48], eax
jmp 0x405b1d
or ecx, 0x100000
shld ecx, esi, 8
shl esi, 8
mov dword [esp + 0x84], ecx
cmp edi, 0xf
jge 0x405b5e
lea eax, [edi*4]
mov ecx, 0x3b
sub ecx, eax
xor edx, edx
xor eax, eax
bts eax, ecx
cmp ecx, 0x20
cmovae edx, eax
xor eax, edx
cmp ecx, 0x40
mov ecx, dword [esp + 0x84]
cmovae edx, eax
add esi, eax
adc ecx, edx
movsx eax, byte [esp + 0x290]
mov edx, dword [esp + 0x80]
mov byte [esp + eax + 0x291], 0x30
movsx eax, byte [esp + 0x290]
mov byte [esp + eax + 0x292], 0x78
mov eax, ecx
add byte [esp + 0x290], 2
shr eax, 0x1c
shld ecx, esi, 4
shl esi, 4
mov al, byte [eax + edx]
mov byte [esp + 0xc8], al
test edi, edi
je 0x405bb3
mov al, byte [0x42f008]
mov byte [esp + 0xc9], al
test edi, edi
lea eax, [esp + 0xca]
lea edx, [esp + 0xc9]
cmovne edx, eax
mov eax, edi
mov dword [esp + 0x6c], edx
mov dword [esp + 0x34], edx
mov dword [esp + 0x84], eax
cmp edi, 0xd
jbe 0x405c04
mov eax, 0xd
mov dword [esp + 0x84], eax
jle 0x405c04
lea eax, [edi - 0xd]
mov dword [esp + 0x84], 0xd
xor edi, edi
mov dword [esp + 0x40], eax
mov dword [esp + 0x64], edi
jmp 0x405c0e
xor edi, edi
mov dword [esp + 0x64], edi
test eax, eax
je 0x405c49
mov edi, dword [esp + 0x84]
dec edi
mov eax, ecx
mov dword [esp + 0x84], edi
mov edi, dword [esp + 0x80]
shr eax, 0x1c
shld ecx, esi, 4
shl esi, 4
mov al, byte [eax + edi]
mov edi, dword [esp + 0x84]
mov byte [edx], al
inc edx
test edi, edi
jne 0x405c15
mov edi, dword [esp + 0x64]
mov dword [esp + 0x6c], edx
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x48]
mov al, byte [eax + 0x11]
mov byte [esp + 0x289], al
test ecx, ecx
jns 0x405c72
neg ecx
mov byte [esp + 0x28a], 0x2d
mov dword [esp + 0x48], ecx
jmp 0x405c7a
mov byte [esp + 0x28a], 0x2b
cmp ecx, 0x3e8
jl 0x405c89
mov eax, 6
jmp 0x405ca0
cmp ecx, 0x64
jl 0x405c95
mov eax, 5
jmp 0x405ca0
xor eax, eax
cmp ecx, 0xa
setge al
add eax, 3
mov dword [esp + 0x84], eax
mov byte [esp + 0x288], al
mov eax, 0x66666667
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, eax
mov dword [esp + 0x80], eax
mov al, dl
mov cl, dl
shl al, 2
add cl, al
mov eax, dword [esp + 0x48]
add cl, cl
sub al, cl
mov ecx, dword [esp + 0x84]
add al, 0x30
mov byte [esp + ecx + 0x288], al
cmp ecx, 3
jbe 0x405d3c
nop
dec ecx
mov eax, 0x66666667
mov dword [esp + 0x84], ecx
mov ecx, edx
imul ecx
mov dword [esp + 0x4c], ecx
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov al, cl
mov dword [esp + 0x80], ecx
mov edx, ecx
shl al, 2
add cl, al
mov eax, dword [esp + 0x4c]
add cl, cl
sub al, cl
mov ecx, dword [esp + 0x84]
add al, 0x30
mov byte [esp + ecx + 0x288], al
cmp ecx, 3
ja 0x405cf0
mov ecx, dword [esp + 0x6c]
lea esi, [esp + 0xc8]
mov eax, ecx
mov dword [esp + 0x78], esi
sub eax, dword [esp + 0x34]
mov dword [esp + 0x48], eax
lea eax, [esp + 0x88]
sub ecx, eax
mov eax, 0x3000001
sub ecx, 0x40
mov dword [esp + 0x84], eax
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x80], ecx
jmp 0x406b3c
cmp cl, 0x47
mov eax, str.0123456789ABCDEFXP
mov ecx, str.0123456789abcdefxp
cmovne eax, ecx
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x5c]
add eax, 8
mov dword [esp + 0x5c], eax
movsd xmm0, qword [eax - 8]
cmp edi, 0xffffffff
jne 0x405dad
mov edi, 6
jmp 0x405db7
test edi, edi
mov eax, 1
cmove edi, eax
lea eax, [edi - 1]
mov dword [esp + 0x64], edi
or eax, 0x80000000
push eax
sub esp, 8
lea eax, [esp + 0x54]
movsd qword [esp], xmm0
push eax
lea eax, [esp + 0x98]
push eax
lea eax, [esp + 0x94]
push eax
lea eax, [esp + 0x90]
push eax
call fcn.004050e0
add esp, 0x1c
test eax, eax
je 0x405dfd
or dword [esp + 0x7c], 0x80
mov esi, dword [esp + 0x64]
mov ecx, edi
mov edi, dword [esp + 0x80]
cmp edi, esi
mov edx, dword [esp + 0x78]
cmova edi, esi
mov dword [esp + 0x78], edx
mov dword [esp + 0x6c], edi
mov dword [esp + 0x80], edi
cmp edi, 1
jbe 0x405e48
test esi, esi
je 0x405e40
cmp byte [edx + edi - 1], 0x30
jne 0x405e40
dec edi
dec esi
mov dword [esp + 0x80], edi
cmp edi, 1
ja 0x405e27
mov dword [esp + 0x64], esi
mov dword [esp + 0x6c], edi
mov eax, dword [esp + 0x48]
mov dword [esp + 0x70], eax
cmp eax, 0xfffffffc
jle 0x405e91
cmp eax, ecx
jg 0x405e91
test eax, eax
jle 0x405e7d
mov esi, eax
cmp eax, edi
jge 0x405e70
mov ecx, edi
sub ecx, eax
mov dword [esp + 0x64], ecx
jmp 0x40645c
mov dword [esp + 0x64], 0
jmp 0x40645c
cmp esi, edi
cmovg esi, edi
sub esi, eax
mov dword [esp + 0x64], esi
mov esi, dword [esp + 0x70]
jmp 0x40645c
cmp esi, edi
jle 0x405ea1
lea esi, [edi - 1]
mov dword [esp + 0x64], esi
jmp 0x405f46
test esi, esi
je 0x405f46
dec esi
mov dword [esp + 0x64], esi
jmp 0x405f46
cmp cl, 0x45
mov eax, str.0123456789ABCDEFXP
mov ecx, str.0123456789abcdefxp
cmovne eax, ecx
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x5c]
add eax, 8
cmp edi, 0xffffffff
mov dword [esp + 0x5c], eax
movsd xmm0, qword [eax - 8]
mov eax, 6
cmove edi, eax
mov eax, edi
mov dword [esp + 0x64], edi
or eax, 0x80000000
push eax
sub esp, 8
lea eax, [esp + 0x54]
movsd qword [esp], xmm0
push eax
lea eax, [esp + 0x98]
push eax
lea eax, [esp + 0x94]
push eax
lea eax, [esp + 0x90]
push eax
call fcn.004050e0
mov esi, dword [esp + 0x64]
add esp, 0x1c
mov edi, dword [esp + 0x80]
mov edx, dword [esp + 0x78]
mov dword [esp + 0x70], esi
mov esi, dword [esp + 0x64]
mov dword [esp + 0x6c], edi
mov dword [esp + 0x78], edx
test eax, eax
je 0x405f46
or dword [esp + 0x7c], 0x80
mov ecx, dword [esp + 0x7c]
lea eax, [esp + 0x290]
push eax
push ecx
mov byte [esp + 0x290], 0
call fcn.00404a30
mov ecx, dword [esp + 0x78]
add esp, 8
cmp ecx, 0x7000
jne 0x405f83
mov ecx, dword [esp + 0x6c]
xor eax, eax
mov dword [esp + 0x84], eax
xor edi, edi
jmp 0x406b38
mov al, byte [edx]
mov byte [esp + 0xc8], al
test esi, esi
je 0x405f9c
mov al, byte [0x42f008]
mov byte [esp + 0xc9], al
cmp dword [esp + 0x64], 0
lea eax, [esp + 0xca]
lea esi, [esp + 0xc9]
cmovne esi, eax
lea eax, [edi - 1]
cmp eax, dword [esp + 0x64]
jbe 0x405fc0
mov edi, dword [esp + 0x64]
inc edi
mov dword [esp + 0x4c], 1
cmp edi, 1
jbe 0x405fe0
mov ecx, dword [esp + 0x4c]
mov al, byte [ecx + edx]
inc ecx
mov byte [esi], al
inc esi
cmp ecx, edi
jb 0x405fd1
mov ecx, dword [esp + 0x70]
mov eax, dword [esp + 0x64]
sub eax, edi
xor edi, edi
inc eax
sub ecx, 1
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x70], ecx
mov al, byte [eax + 0xe]
mov byte [esp + 0x289], al
jns 0x406014
neg ecx
mov byte [esp + 0x28a], 0x2d
mov dword [esp + 0x70], ecx
jmp 0x40601c
mov byte [esp + 0x28a], 0x2b
xor eax, eax
cmp ecx, 0x64
setge al
add eax, 4
mov dword [esp + 0x84], eax
mov byte [esp + 0x288], al
mov eax, 0x66666667
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, eax
mov dword [esp + 0x80], eax
mov al, dl
mov cl, dl
shl al, 2
add cl, al
mov eax, dword [esp + 0x70]
add cl, cl
sub al, cl
mov ecx, dword [esp + 0x84]
add al, 0x30
mov byte [esp + ecx + 0x288], al
dec ecx
mov eax, 0x66666667
mov dword [esp + 0x84], ecx
mov ecx, edx
imul ecx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x48], ecx
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov al, cl
mov dword [esp + 0x80], ecx
mov edx, ecx
shl al, 2
add cl, al
mov eax, dword [esp + 0x4c]
add cl, cl
sub al, cl
mov ecx, dword [esp + 0x84]
add al, 0x30
mov byte [esp + ecx + 0x288], al
cmp ecx, 3
ja 0x406070
mov eax, 0x3000001
mov dword [esp + 0x84], eax
jmp 0x40688e
mov eax, dword [esp + 0x5c]
add eax, 8
mov dword [esp + 0x5c], eax
movsd xmm1, qword [eax - 8]
jmp 0x4063a1
cmp cl, 0x42
mov byte [esp + 0x290], 0
mov ecx, dword [esp + 0x7c]
mov edx, str.0123456789ABCDEFXP
mov eax, str.0123456789abcdefxp
cmovne edx, eax
mov dword [esp + 0x84], edx
test cl, 8
je 0x406122
mov al, byte [edx + 0xb]
mov word [esp + 0x290], 0x3002
mov byte [esp + 0x292], al
mov esi, 0x180
jmp 0x4061a4
mov ecx, dword [esp + 0x7c]
mov dword [esp + 0x84], str.0123456789ABCDEFXP
mov byte [esp + 0x290], 0
test cl, 8
je 0x406152
mov word [esp + 0x290], 0x3001
mov esi, 0x330
jmp 0x4061a4
and dword [esp + 0x7c], 0xffffffef
mov edi, 8
cmp cl, 0x58
mov byte [esp + 0x290], 0
mov ecx, dword [esp + 0x7c]
mov edx, str.0123456789ABCDEFXP
mov eax, str.0123456789abcdefxp
mov esi, 0x440
cmovne edx, eax
mov dword [esp + 0x84], edx
test cl, 8
je 0x4061a4
mov al, byte [edx + 0x10]
mov word [esp + 0x290], 0x3002
mov byte [esp + 0x292], al
test cl, 0x20
je 0x4061bc
mov ecx, dword [esp + 0x5c]
add ecx, 8
mov dword [esp + 0x5c], ecx
mov eax, dword [ecx - 8]
mov ecx, dword [ecx - 4]
jmp 0x4061cc
mov eax, dword [esp + 0x5c]
add eax, 4
xor ecx, ecx
mov dword [esp + 0x5c], eax
mov eax, dword [eax - 4]
mov dword [esp + 0x24], eax
lea edx, [esp + 0x288]
mov dword [esp + 0x80], eax
or eax, ecx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x78], edx
mov dword [esp + 0x48], 0
mov byte [esp + 0x288], 0
jne 0x406222
mov byte [esp + 0x290], al
test edi, edi
jne 0x406222
mov esi, dword [esp + 0x78]
xor edx, edx
mov dword [esp + 0x6c], edx
mov dword [esp + 0x80], edx
mov dword [esp + 0x84], eax
jmp 0x406b93
xor ecx, ecx
movq xmm1, qword [esp + 0x24]
inc ecx
mov dword [esp + 0x6c], ecx
mov eax, 1
mov ecx, esi
dec edx
shr ecx, 8
shl eax, cl
dec eax
mov dword [esp + 0x4c], ecx
and eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x84]
mov al, byte [eax + ecx]
mov ecx, dword [esp + 0x4c]
mov byte [edx], al
movd xmm0, ecx
mov ecx, dword [esp + 0x6c]
psrlq xmm1, xmm0
movq qword [esp + 0x24], xmm1
mov eax, dword [esp + 0x24]
mov dword [esp + 0x80], eax
or eax, dword [esp + 0x28]
jne 0x40627f
cmp ecx, edi
jge 0x40629f
test byte [esp + 0x7c], 0x40
je 0x406224
inc esi
mov eax, esi
shr eax, 4
xor eax, esi
test al, 0xf
jne 0x406224
mov al, byte [esp + 0x6b]
dec edx
and esi, 0xfffffff0
inc ecx
mov byte [edx], al
jmp 0x406224
and esi, 0xf0
mov dword [esp + 0x78], edx
shl esi, 0x14
lea eax, [esp + 0x288]
sub esi, edx
mov dword [esp + 0x80], ecx
add eax, esi
mov dword [esp + 0x84], eax
jmp 0x406b38
test byte [esp + 0x7c], 0x20
je 0x40632a
mov edx, dword [esp + 0x5c]
add edx, 8
mov dword [esp + 0x5c], edx
mov eax, dword [edx - 8]
mov edx, dword [edx - 4]
mov dword [esp + 0x84], eax
mov dword [esp + 0x70], edx
cmp cl, 0x75
je 0x40636b
test edx, edx
jg 0x40636b
jl 0x406308
test eax, eax
jae 0x40636b
mov ecx, dword [esp + 0x7c]
neg eax
mov dword [esp + 0x84], eax
adc edx, 0
neg edx
or ecx, 0x80
mov dword [esp + 0x70], edx
mov dword [esp + 0x7c], ecx
jmp 0x40636f
mov eax, dword [esp + 0x5c]
xor edx, edx
add eax, 4
mov dword [esp + 0x70], edx
mov dword [esp + 0x5c], eax
mov eax, dword [eax - 4]
mov dword [esp + 0x84], eax
cmp cl, 0x75
je 0x40636b
mov ecx, dword [esp + 0x7c]
test eax, eax
jns 0x40636f
neg eax
mov dword [esp + 0x70], edx
or ecx, 0x80
mov dword [esp + 0x84], eax
mov dword [esp + 0x7c], ecx
jmp 0x40636f
mov ecx, dword [esp + 0x7c]
test ecx, 0x100
je 0x4068b7
test edx, edx
ja 0x40638c
jb 0x406388
cmp eax, 0x400
jae 0x40638c
xor edi, edi
jmp 0x406397
cmp edi, 0xffffffff
mov ecx, 1
cmove edi, ecx
mov ecx, eax
call fcn.00407730
movaps xmm1, xmm0
mov eax, dword [esp + 0x7c]
test eax, 0x100
je 0x4063f8
movsd xmm2, qword [0x4261c8]
test eax, 0x800
je 0x4063c3
movsd xmm2, qword [0x4261d0]
cmp eax, 0x4000000
jae 0x4063f8
movsd xmm3, qword [0x4261e0]
comisd xmm2, xmm1
jbe 0x4063e4
movaps xmm0, xmm2
xorps xmm0, xmm3
comisd xmm1, xmm0
ja 0x4063f4
add eax, 0x1000000
divsd xmm1, xmm2
cmp eax, 0x4000000
jb 0x4063d2
mov dword [esp + 0x7c], eax
cmp edi, 0xffffffff
mov eax, 6
cmove edi, eax
lea eax, [esp + 0x48]
push edi
sub esp, 8
mov dword [esp + 0x70], edi
movsd qword [esp], xmm1
push eax
lea eax, [esp + 0x98]
push eax
lea eax, [esp + 0x94]
push eax
lea eax, [esp + 0x90]
push eax
call fcn.004050e0
mov edi, dword [esp + 0x9c]
add esp, 0x1c
mov esi, dword [esp + 0x48]
mov edx, dword [esp + 0x78]
mov dword [esp + 0x6c], edi
mov dword [esp + 0x70], esi
mov dword [esp + 0x78], edx
test eax, eax
je 0x40645c
or dword [esp + 0x7c], 0x80
lea eax, [esp + 0x290]
mov byte [esp + 0x288], 0
push eax
push dword [esp + 0x80]
call fcn.00404a30
add esp, 8
cmp esi, 0x7000
jne 0x40649b
mov ecx, dword [esp + 0x6c]
xor eax, eax
mov dword [esp + 0x78], edx
xor edi, edi
mov dword [esp + 0x84], eax
jmp 0x406b38
mov edx, dword [esp + 0x70]
lea ecx, [esp + 0xc8]
test edx, edx
jg 0x4065c6
mov esi, dword [esp + 0x64]
mov byte [esp + 0xc8], 0x30
test esi, esi
je 0x4064ca
mov al, byte [0x42f008]
mov byte [esp + 0xc9], al
test esi, esi
lea ecx, [esp + 0xc9]
lea eax, [esp + 0xca]
cmovne ecx, eax
neg edx
cmp edx, esi
mov dword [esp + 0x80], ecx
cmovg edx, esi
mov dword [esp + 0x70], edx
mov edi, edx
mov dword [esp + 0x44], edi
test edx, edx
je 0x406519
mov dword [esp + 0x80], ecx
test cl, 3
je 0x40650e
mov byte [ecx], 0x30
inc ecx
sub edi, 1
jne 0x406500
mov dword [esp + 0x44], edi
mov dword [esp + 0x80], ecx
cmp edi, 4
jl 0x406550
mov esi, dword [esp + 0x64]
mov edx, edi
mov edi, dword [esp + 0x80]
and edx, 0xfffffffc
mov ecx, edx
mov eax, 0x30303030
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x80]
mov edi, dword [esp + 0x44]
add ecx, edx
mov dword [esp + 0x80], ecx
sub edi, edx
test edi, edi
je 0x406570
push edi
push 0x30
push ecx
call fcn.004088c0
mov ecx, dword [esp + 0x8c]
add esp, 0xc
add ecx, edi
mov dword [esp + 0x80], ecx
mov edx, dword [esp + 0x6c]
mov edi, dword [esp + 0x70]
lea eax, [edi + edx]
cmp eax, esi
jle 0x406583
mov edx, esi
sub edx, edi
mov eax, edx
mov dword [esp + 0x4c], eax
test eax, eax
je 0x4065af
mov esi, dword [esp + 0x78]
mov edi, edx
sub esi, ecx
mov al, byte [esi + ecx]
mov byte [ecx], al
inc ecx
sub edi, 1
jne 0x406595
mov edi, dword [esp + 0x70]
mov esi, dword [esp + 0x64]
mov dword [esp + 0x80], ecx
mov ecx, esi
mov eax, 0x3000001
sub ecx, edi
mov dword [esp + 0x84], eax
sub ecx, edx
jmp 0x40680e
mov eax, dword [esp + 0x7c]
and eax, 0x40
mov dword [esp + 0x44], eax
je 0x4065f2
mov eax, 0x258
mov esi, 3
sub eax, edx
xor edx, edx
div esi
mov eax, edx
mov dword [esp + 0x84], edx
mov edx, dword [esp + 0x70]
jmp 0x4065fb
xor eax, eax
mov dword [esp + 0x84], eax
mov esi, dword [esp + 0x78]
cmp edx, edi
jb 0x406751
mov dl, byte [esp + 0x6b]
mov dword [esp + 0x6c], 0
cmp dword [esp + 0x44], 0
je 0x406635
inc eax
mov dword [esp + 0x84], eax
cmp eax, 4
jne 0x406635
xor eax, eax
mov byte [ecx], dl
mov dword [esp + 0x84], eax
inc ecx
jmp 0x406613
mov eax, dword [esp + 0x6c]
mov al, byte [eax + esi]
mov byte [ecx], al
inc ecx
mov eax, dword [esp + 0x6c]
inc eax
mov dword [esp + 0x6c], eax
cmp eax, edi
mov eax, dword [esp + 0x84]
jb 0x406613
mov edx, dword [esp + 0x70]
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x80], ecx
cmp eax, edx
jae 0x406716
sub edx, eax
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x70], edx
test al, 0x40
jne 0x4066df
test edx, edx
je 0x406699
test cl, 3
je 0x40668e
mov byte [ecx], 0x30
inc ecx
sub edx, 1
jne 0x406680
mov dword [esp + 0x70], edx
mov dword [esp + 0x80], ecx
cmp edx, 4
jb 0x4066df
mov edi, dword [esp + 0x80]
mov eax, 0x30303030
shr edx, 2
mov dword [esp + 0x4c], edx
shl edx, 2
mov ecx, edx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x80]
mov eax, dword [esp + 0x4c]
add ecx, edx
mov edx, dword [esp + 0x70]
mov dword [esp + 0x80], ecx
sub edx, 4
sub eax, 1
jne 0x4066d3
mov eax, dword [esp + 0x7c]
test edx, edx
je 0x406716
mov esi, eax
mov eax, dword [esp + 0x84]
and esi, 0x40
nop
test esi, esi
je 0x406706
inc eax
cmp eax, 4
jne 0x406706
xor eax, eax
mov al, byte [esp + 0x6b]
mov byte [ecx], al
xor eax, eax
jmp 0x40670a
mov byte [ecx], 0x30
dec edx
inc ecx
test edx, edx
jne 0x4066f0
mov dword [esp + 0x80], ecx
lea edx, [esp + 0x88]
mov eax, ecx
sub eax, edx
mov edx, dword [esp + 0x64]
add eax, 0x2ffffc0
mov dword [esp + 0x84], eax
test edx, edx
je 0x406812
mov al, byte [0x42f008]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x80], ecx
mov dword [esp + 0x40], edx
jmp 0x406812
xor edi, edi
cmp dword [esp + 0x44], 0
je 0x40677b
inc eax
mov dword [esp + 0x84], eax
cmp eax, 4
jne 0x40677b
xor eax, eax
mov dword [esp + 0x84], eax
mov al, byte [esp + 0x6b]
mov byte [ecx], al
inc ecx
xor eax, eax
jmp 0x406753
mov al, byte [edi + esi]
inc edi
mov byte [ecx], al
inc ecx
mov eax, dword [esp + 0x84]
cmp edi, edx
jb 0x406753
mov eax, ecx
mov dword [esp + 0x80], ecx
lea ecx, [esp + 0x88]
mov dword [esp + 0x44], edi
mov edi, dword [esp + 0x6c]
sub eax, ecx
mov ecx, dword [esp + 0x80]
add eax, 0x2ffffc0
cmp dword [esp + 0x64], 0
mov dword [esp + 0x84], eax
je 0x4067d0
mov al, byte [0x42f008]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x80], ecx
mov eax, edi
sub eax, edx
cmp eax, dword [esp + 0x64]
jbe 0x4067e0
mov edi, dword [esp + 0x64]
add edi, edx
cmp dword [esp + 0x44], edi
jae 0x406806
mov edx, dword [esp + 0x44]
nop word [eax + eax]
mov al, byte [edx + esi]
inc edx
mov byte [ecx], al
inc ecx
cmp edx, edi
jb 0x4067f0
mov edx, dword [esp + 0x70]
mov dword [esp + 0x80], ecx
mov ecx, edx
sub ecx, edi
add ecx, dword [esp + 0x64]
mov dword [esp + 0x40], ecx
mov eax, dword [esp + 0x7c]
xor edi, edi
test eax, 0x100
je 0x406887
mov edx, eax
mov byte [esp + 0x289], 0x20
shr edx, 0xa
mov esi, eax
not dl
shr esi, 0x18
and dl, 1
mov byte [esp + 0x288], dl
test esi, esi
je 0x406887
test eax, 0x800
movzx ecx, dl
mov eax, str._kMGT
cmovne eax, dword [esp + 0x20]
inc dl
mov al, byte [eax + esi]
mov byte [esp + ecx + 0x289], al
mov eax, dword [esp + 0x7c]
and eax, 0x1800
cmp eax, 0x800
jne 0x406880
movzx eax, dl
inc dl
mov byte [esp + eax + 0x289], 0x69
mov byte [esp + 0x288], dl
mov esi, dword [esp + 0x80]
mov ecx, esi
lea eax, [esp + 0x88]
sub ecx, eax
lea esi, [esp + 0xc8]
sub ecx, 0x40
mov dword [esp + 0x78], esi
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x80], ecx
jmp 0x406b3c
mov eax, dword [esp + 0x7c]
lea edx, [esp + 0x288]
xor edi, edi
and eax, 0x40
mov dword [esp + 0x4c], eax
mov dword [esp + 0x80], edi
mov dword [esp + 0x78], edx
nop word [eax + eax]
cmp dword [esp + 0x70], 0
lea esi, [edx - 8]
mov ecx, dword [esp + 0x84]
mov dword [esp + 0x34], edx
mov dword [esp + 0x6c], esi
mov dword [esp + 0x44], ecx
ja 0x40692d
mov edi, dword [esp + 0x80]
cmp ecx, 0x5f5e100
jae 0x40692d
xorps xmm0, xmm0
movlpd qword [esp + 0x24], xmm0
mov eax, dword [esp + 0x28]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x84], eax
jmp 0x4069cc
mov eax, dword [esp + 0x84]
mov edx, 0x8461cefd
mul edx
mov eax, dword [esp + 0x84]
mov edi, 0xabcc7711
mov esi, edx
mov ecx, 0x8461cefd
mul edi
mov dword [esp + 0x30], edx
mov edi, eax
mov eax, dword [esp + 0x70]
mul ecx
mov dword [esp + 0x1c], edx
mov ecx, eax
mov eax, dword [esp + 0x70]
mov edx, 0xabcc7711
mul edx
add ecx, esi
mov esi, dword [esp + 0x6c]
mov dword [esp + 0x70], edx
mov edx, dword [esp + 0x1c]
adc edx, 0
mov dword [esp + 0x84], eax
add edi, ecx
mov ecx, dword [esp + 0x30]
mov edi, dword [esp + 0x80]
adc ecx, 0
xor eax, eax
add edx, ecx
mov ecx, dword [esp + 0x84]
adc eax, eax
add ecx, edx
mov edx, dword [esp + 0x70]
adc edx, eax
shrd ecx, edx, 0x1a
imul eax, ecx, 0x5f5e100
shr edx, 0x1a
mov dword [esp + 0x84], ecx
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x70], edx
mov edx, dword [esp + 0x78]
sub ecx, eax
cmp dword [esp + 0x4c], 0
mov eax, dword [esp + 0x34]
jne 0x406a12
nop word [eax + eax]
sub edx, 2
mov eax, 0x51eb851f
mov dword [esp + 0x78], edx
mov esi, dword [esp + 0x78]
mul ecx
shr edx, 5
imul eax, edx, 0x64
sub ecx, eax
mov ax, word [ecx*2 + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov ecx, edx
mov word [esi], ax
mov edx, esi
test ecx, ecx
jne 0x4069e0
jmp 0x406a7a
mov edx, eax
mov dword [esp + 0x78], edx
test ecx, ecx
je 0x406a7a
mov eax, edi
mov dword [esp + 0x34], ecx
dec edx
inc edi
mov dword [esp + 0x78], edx
cmp eax, 3
jne 0x406a3a
mov al, byte [esp + 0x6b]
xor edi, edi
dec esi
jmp 0x406a69
mov dword [esp + 0x78], edx
mov eax, 0xcccccccd
mul dword [esp + 0x34]
shr edx, 3
mov al, dl
mov dword [esp + 0x44], edx
shl al, 2
mov cl, dl
mov edx, dword [esp + 0x78]
add cl, al
mov eax, dword [esp + 0x34]
add cl, cl
sub al, cl
mov ecx, dword [esp + 0x44]
add al, 0x30
mov byte [edx], al
test ecx, ecx
jne 0x406a20
mov dword [esp + 0x6c], esi
mov dword [esp + 0x80], edi
mov eax, dword [esp + 0x84]
or eax, dword [esp + 0x70]
je 0x406abb
mov ecx, dword [esp + 0x6c]
cmp edx, ecx
je 0x4068e0
cmp dword [esp + 0x4c], 0
je 0x406aae
mov eax, edi
inc edi
cmp eax, 3
jne 0x406aae
mov al, byte [esp + 0x6b]
dec edx
xor edi, edi
dec ecx
mov byte [edx], al
jmp 0x406ab2
dec edx
mov byte [edx], 0x30
cmp edx, ecx
jne 0x406a93
jmp 0x4068cb
cmp byte [edx], 0x30
jne 0x406ad0
lea eax, [esp + 0x288]
cmp edx, eax
je 0x406ad0
inc edx
mov dword [esp + 0x78], edx
lea eax, [esp + 0x290]
mov byte [esp + 0x288], 0
push eax
push dword [esp + 0x80]
call fcn.00404a30
lea ecx, [esp + 0x290]
add esp, 8
sub ecx, edx
mov dword [esp + 0x6c], ecx
mov eax, ecx
mov dword [esp + 0x80], ecx
jne 0x406b21
dec edx
mov ecx, 1
mov dword [esp + 0x78], edx
mov eax, ecx
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x80], ecx
mov byte [edx], 0x30
mov edi, dword [esp + 0x64]
add eax, 0x3000000
mov dword [esp + 0x84], eax
xor eax, eax
test edi, edi
cmovs edi, eax
mov esi, dword [esp + 0x78]
cmp edi, ecx
jge 0x406b8f
jmp 0x406b8d
mov byte [esp + 0x287], cl
mov dword [esp + 0x7c], 0
mov dword [esp + 0x3c], 0
xor eax, eax
lea esi, [esp + 0x287]
mov dword [esp + 0x84], eax
mov dword [esp + 0x48], eax
mov byte [esp + 0x288], al
lea ecx, [eax + 1]
mov byte [esp + 0x290], al
mov dword [esp + 0x80], ecx
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x78], esi
mov edi, ecx
mov edx, dword [esp + 0x6c]
movsx eax, byte [esp + 0x288]
add eax, dword [esp + 0x40]
movsx ecx, byte [esp + 0x290]
add ecx, eax
mov eax, dword [esp + 0x3c]
add ecx, edi
cmp eax, ecx
cmovl eax, ecx
sub edi, edx
sub eax, ecx
mov dword [esp + 0x64], edi
mov ecx, dword [esp + 0x7c]
mov dword [esp + 0x3c], eax
test cl, 1
jne 0x406be6
test cl, 0x10
je 0x406bdf
cmp eax, edi
cmovg edi, eax
xor eax, eax
mov dword [esp + 0x64], edi
mov dword [esp + 0x3c], eax
jmp 0x406be6
and ecx, 0xffffffbf
mov dword [esp + 0x7c], ecx
add eax, edi
je 0x406f31
test cl, 1
mov ecx, dword [esp + 0x74]
jne 0x406cfe
mov eax, dword [esp + 0x3c]
test eax, eax
jle 0x406cfe
mov edx, dword [esp + 0x54]
nop dword [eax + eax]
mov edi, eax
mov dword [esp + 0x44], edi
test edx, edx
je 0x406c34
mov eax, dword [esp + 0x58]
sub eax, ecx
add eax, 0x200
cmp dword [esp + 0x3c], eax
cmovg edi, eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x44], edi
sub eax, edi
mov dword [esp + 0x3c], eax
test edi, edi
je 0x406c56
nop
test cl, 3
je 0x406c4e
mov byte [ecx], 0x20
inc ecx
sub edi, 1
jne 0x406c40
mov dword [esp + 0x44], edi
mov dword [esp + 0x74], ecx
cmp edi, 4
jl 0x406c84
mov edx, edi
mov eax, 0x20202020
mov edi, dword [esp + 0x74]
and edx, 0xfffffffc
mov ecx, edx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x74]
mov edi, dword [esp + 0x44]
add ecx, edx
sub edi, edx
mov dword [esp + 0x74], ecx
mov edx, dword [esp + 0x54]
test edi, edi
je 0x406ca5
push edi
push 0x20
push ecx
call fcn.004088c0
mov ecx, dword [esp + 0x80]
add esp, 0xc
mov edx, dword [esp + 0x54]
add ecx, edi
mov dword [esp + 0x74], ecx
test edx, edx
je 0x406ce8
mov edi, dword [esp + 0x58]
mov eax, ecx
sub eax, edi
mov dword [esp + 0x30], eax
inc eax
cmp eax, 0x200
jl 0x406ce8
mov eax, dword [esp + 0x30]
add dword [esp + 0x50], eax
push eax
push dword [esp + 0x3c]
push edi
call edx
mov edi, eax
add esp, 0xc
mov dword [esp + 0x58], edi
mov ecx, edi
mov dword [esp + 0x74], ecx
test edi, edi
je 0x4073c9
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x3c]
test eax, eax
jg 0x406c10
mov dh, byte [0x42f009]
mov byte [esp + 0x6b], dh
mov dl, byte [esp + 0x290]
lea eax, [esp + 0x291]
mov edi, dword [esp + 0x58]
mov dword [esp + 0x4c], eax
test dl, dl
je 0x406dd4
nop dword [eax]
cmp dword [esp + 0x54], 0
movsx eax, dl
mov dword [esp + 0x70], eax
je 0x406d4e
mov eax, edi
mov edi, dword [esp + 0x70]
sub eax, ecx
add eax, 0x200
cmp edi, eax
cmovg edi, eax
mov eax, edi
mov dword [esp + 0x70], edi
mov edi, dword [esp + 0x58]
mov dword [esp + 0x70], eax
sub dl, al
mov byte [esp + 0x290], dl
test eax, eax
je 0x406d7c
mov edx, dword [esp + 0x4c]
nop
mov al, byte [edx]
inc edx
mov byte [ecx], al
inc ecx
sub dword [esp + 0x70], 1
jne 0x406d60
mov dword [esp + 0x4c], edx
mov dl, byte [esp + 0x290]
mov dword [esp + 0x74], ecx
cmp dword [esp + 0x54], 0
je 0x406dc3
mov eax, ecx
sub eax, edi
mov dword [esp + 0x30], eax
inc eax
cmp eax, 0x200
jl 0x406dc3
mov eax, dword [esp + 0x30]
add dword [esp + 0x50], eax
push eax
push dword [esp + 0x3c]
push edi
call dword [esp + 0x60]
mov edi, eax
add esp, 0xc
mov dword [esp + 0x58], edi
mov ecx, edi
mov dword [esp + 0x74], ecx
test edi, edi
je 0x4073c9
mov dl, byte [esp + 0x290]
test dl, dl
jne 0x406d20
mov al, byte [0x42f009]
mov byte [esp + 0x6b], al
mov edx, dword [esp + 0x84]
mov ecx, edx
mov eax, dword [esp + 0x7c]
shr ecx, 0x18
and eax, 0x40
mov dword [esp + 0x34], ecx
mov dword [esp + 0x4c], eax
je 0x406e0a
and edx, 0xffffff
inc ecx
add edx, dword [esp + 0x64]
mov eax, edx
xor edx, edx
div ecx
mov eax, dword [esp + 0x34]
sub eax, edx
jmp 0x406e0c
xor eax, eax
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x64]
test eax, eax
jle 0x406f31
nop dword [eax]
cmp dword [esp + 0x54], 0
mov edx, eax
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x84], edx
je 0x406e4f
mov eax, edi
sub eax, ecx
add eax, 0x200
cmp dword [esp + 0x64], eax
cmovg edx, eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0x84], edx
sub eax, edx
cmp dword [esp + 0x4c], 0
mov dword [esp + 0x64], eax
jne 0x406ea9
test edx, edx
je 0x406e79
test cl, 3
je 0x406e6e
mov byte [ecx], 0x30
inc ecx
sub edx, 1
jne 0x406e60
mov dword [esp + 0x84], edx
mov dword [esp + 0x74], ecx
cmp edx, 4
jl 0x406ea9
mov edi, dword [esp + 0x74]
and edx, 0xfffffffc
mov ecx, edx
mov eax, 0x30303030
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x74]
add ecx, edx
sub dword [esp + 0x84], edx
mov edx, dword [esp + 0x84]
mov dword [esp + 0x74], ecx
test edx, edx
je 0x406ee1
mov edi, dword [esp + 0x70]
mov esi, dword [esp + 0x4c]
test esi, esi
je 0x406ecc
mov eax, edi
inc edi
cmp eax, dword [esp + 0x34]
jne 0x406ecc
mov al, byte [esp + 0x6b]
xor edi, edi
mov byte [ecx], al
jmp 0x406ecf
mov byte [ecx], 0x30
inc ecx
sub edx, 1
jne 0x406eb5
mov esi, dword [esp + 0x78]
mov dword [esp + 0x70], edi
mov dword [esp + 0x74], ecx
mov edx, dword [esp + 0x54]
mov edi, dword [esp + 0x58]
test edx, edx
je 0x406f25
sub ecx, edi
lea eax, [ecx + 1]
cmp eax, 0x200
jl 0x406f25
add dword [esp + 0x50], ecx
push ecx
push dword [esp + 0x3c]
push edi
call edx
mov edi, eax
add esp, 0xc
mov dword [esp + 0x58], edi
mov ecx, edi
mov dword [esp + 0x74], ecx
test edi, edi
je 0x4073c9
mov al, byte [0x42f009]
mov byte [esp + 0x6b], al
mov eax, dword [esp + 0x64]
test eax, eax
jg 0x406e20
mov al, byte [esp + 0x290]
lea edx, [esp + 0x291]
mov ecx, dword [esp + 0x74]
mov edi, dword [esp + 0x58]
mov dword [esp + 0x78], edx
test al, al
je 0x40702e
nop dword [eax]
nop word [eax + eax]
cmp dword [esp + 0x54], 0
movsx edx, al
mov dword [esp + 0x84], edx
mov edx, dword [esp + 0x78]
je 0x406fa5
mov edx, dword [esp + 0x84]
mov eax, edi
sub eax, ecx
add eax, 0x200
cmp edx, eax
cmovg edx, eax
mov eax, edx
mov dword [esp + 0x84], edx
mov edx, dword [esp + 0x78]
mov dword [esp + 0x84], eax
mov al, byte [esp + 0x290]
sub al, byte [esp + 0x84]
cmp dword [esp + 0x84], 0
mov byte [esp + 0x290], al
je 0x406fdf
nop dword [eax]
mov al, byte [edx]
inc edx
mov byte [ecx], al
inc ecx
sub dword [esp + 0x84], 1
jne 0x406fc0
mov al, byte [esp + 0x290]
mov dword [esp + 0x78], edx
mov dword [esp + 0x74], ecx
cmp dword [esp + 0x54], 0
je 0x407026
mov eax, ecx
sub eax, edi
mov dword [esp + 0x30], eax
inc eax
cmp eax, 0x200
jl 0x40701f
mov eax, dword [esp + 0x30]
add dword [esp + 0x50], eax
push eax
push dword [esp + 0x3c]
push edi
call dword [esp + 0x60]
mov edi, eax
add esp, 0xc
mov dword [esp + 0x58], edi
mov ecx, edi
mov dword [esp + 0x74], ecx
test edi, edi
je 0x4073c9
mov al, byte [esp + 0x290]
test al, al
jne 0x406f60
mov edx, dword [esp + 0x6c]
test edx, edx
je 0x40712f
nop word [eax + eax]
cmp dword [esp + 0x54], 0
mov eax, edx
mov dword [esp + 0x84], eax
je 0x407072
mov eax, edi
mov edi, edx
sub eax, ecx
add eax, 0x200
cmp edx, eax
cmovg edi, eax
mov dword [esp + 0x84], edi
mov edi, dword [esp + 0x58]
mov eax, dword [esp + 0x84]
sub edx, eax
mov dword [esp + 0x6c], edx
cmp eax, 4
jl 0x4070be
mov edi, dword [esp + 0x84]
shr eax, 2
mov dword [esp + 0x30], eax
neg eax
lea edi, [edi + eax*4]
mov dword [esp + 0x84], edi
mov edi, dword [esp + 0x30]
nop dword [eax + eax]
mov eax, dword [esi]
add esi, 4
mov dword [ecx], eax
add ecx, 4
sub edi, 1
jne 0x4070a0
mov edi, dword [esp + 0x58]
mov eax, dword [esp + 0x84]
mov dword [esp + 0x74], ecx
test eax, eax
je 0x4070e3
mov edi, dword [esp + 0x84]
nop dword [eax]
mov al, byte [esi]
inc esi
mov byte [ecx], al
inc ecx
sub edi, 1
jne 0x4070d0
mov edi, dword [esp + 0x58]
mov dword [esp + 0x74], ecx
cmp dword [esp + 0x54], 0
je 0x407127
mov eax, ecx
sub eax, edi
mov dword [esp + 0x30], eax
inc eax
cmp eax, 0x200
jl 0x407127
mov eax, dword [esp + 0x30]
add dword [esp + 0x50], eax
push eax
push dword [esp + 0x3c]
push edi
call dword [esp + 0x60]
mov edi, eax
add esp, 0xc
mov dword [esp + 0x58], edi
mov ecx, edi
mov dword [esp + 0x74], ecx
test edi, edi
je 0x4073c9
mov edx, dword [esp + 0x6c]
test edx, edx
jne 0x407040
mov eax, dword [esp + 0x40]
test eax, eax
je 0x40720a
mov edx, dword [esp + 0x54]
nop
mov esi, eax
test edx, edx
je 0x40715a
mov eax, edi
sub eax, ecx
add eax, 0x200
cmp dword [esp + 0x40], eax
cmovg esi, eax
mov eax, dword [esp + 0x40]
sub eax, esi
mov dword [esp + 0x40], eax
test esi, esi
je 0x407176
test cl, 3
je 0x407172
mov byte [ecx], 0x30
inc ecx
sub esi, 1
jne 0x407164
mov dword [esp + 0x74], ecx
cmp esi, 4
jl 0x4071a0
mov edi, dword [esp + 0x74]
mov edx, esi
and edx, 0xfffffffc
mov eax, 0x30303030
mov ecx, edx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x74]
add ecx, edx
sub esi, edx
mov edx, dword [esp + 0x54]
mov dword [esp + 0x74], ecx
test esi, esi
je 0x4071c1
push esi
push 0x30
push ecx
call fcn.004088c0
mov ecx, dword [esp + 0x80]
add esp, 0xc
mov edx, dword [esp + 0x54]
add ecx, esi
mov dword [esp + 0x74], ecx
mov edi, dword [esp + 0x58]
test edx, edx
je 0x4071fe
mov esi, ecx
sub esi, edi
lea eax, [esi + 1]
cmp eax, 0x200
jl 0x4071fe
add dword [esp + 0x50], esi
push esi
push dword [esp + 0x3c]
push edi
call edx
mov edi, eax
add esp, 0xc
mov dword [esp + 0x58], edi
mov ecx, edi
mov dword [esp + 0x74], ecx
test edi, edi
je 0x4073c9
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x40]
test eax, eax
jne 0x407140
cmp byte [esp + 0x288], 0
lea esi, [esp + 0x289]
mov dword [esp + 0x78], esi
je 0x4072b8
nop dword [eax]
nop word [eax + eax]
cmp dword [esp + 0x54], 0
movsx edx, byte [esp + 0x288]
je 0x40724d
mov eax, edi
sub eax, ecx
add eax, 0x200
cmp edx, eax
cmovg edx, eax
sub byte [esp + 0x288], dl
test edx, edx
je 0x40726b
mov al, byte [esi]
inc esi
mov byte [ecx], al
inc ecx
sub edx, 1
jne 0x407258
mov dword [esp + 0x78], esi
mov dword [esp + 0x74], ecx
mov edx, dword [esp + 0x54]
test edx, edx
je 0x4072aa
mov eax, ecx
sub eax, edi
mov dword [esp + 0x30], eax
inc eax
cmp eax, 0x200
jl 0x4072aa
mov eax, dword [esp + 0x30]
add dword [esp + 0x50], eax
push eax
push dword [esp + 0x3c]
push edi
call edx
mov edi, eax
add esp, 0xc
mov dword [esp + 0x58], edi
mov ecx, edi
mov dword [esp + 0x74], ecx
test edi, edi
je 0x4073c9
cmp byte [esp + 0x288], 0
jne 0x407230
test byte [esp + 0x7c], 1
je 0x40738b
mov edx, dword [esp + 0x3c]
test edx, edx
jle 0x40738b
nop
cmp dword [esp + 0x54], 0
mov esi, edx
je 0x4072e7
mov eax, edi
sub eax, ecx
add eax, 0x200
cmp edx, eax
cmovg esi, eax
sub edx, esi
mov dword [esp + 0x3c], edx
test esi, esi
je 0x407303
test cl, 3
je 0x4072ff
mov byte [ecx], 0x20
inc ecx
sub esi, 1
jne 0x4072f1
mov dword [esp + 0x74], ecx
cmp esi, 4
jl 0x407329
mov edi, dword [esp + 0x74]
mov edx, esi
and edx, 0xfffffffc
mov eax, 0x20202020
mov ecx, edx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x74]
add ecx, edx
sub esi, edx
mov dword [esp + 0x74], ecx
test esi, esi
je 0x407346
push esi
push 0x20
push ecx
call fcn.004088c0
mov ecx, dword [esp + 0x80]
add esp, 0xc
add ecx, esi
mov dword [esp + 0x74], ecx
mov esi, dword [esp + 0x54]
mov edi, dword [esp + 0x58]
test esi, esi
je 0x40737f
mov edx, ecx
sub edx, edi
lea eax, [edx + 1]
cmp eax, 0x200
jl 0x40737f
add dword [esp + 0x50], edx
push edx
push dword [esp + 0x3c]
push edi
call esi
mov edi, eax
add esp, 0xc
mov dword [esp + 0x58], edi
mov ecx, edi
mov dword [esp + 0x74], ecx
test edi, edi
je 0x4073c9
mov edx, dword [esp + 0x3c]
test edx, edx
jne 0x4072d0
mov edx, dword [esp + 0x60]
mov ecx, dword [esp + 0x74]
inc edx
jmp 0x40568d
mov edx, dword [esp + 0x54]
test edx, edx
jne 0x4073a5
mov byte [ecx], dl
jmp 0x4073c9
mov esi, ecx
sub esi, edi
lea eax, [esi + 0x1ff]
cmp eax, 0x200
jl 0x4073c9
add dword [esp + 0x50], esi
push esi
push dword [esp + 0x3c]
push edi
call edx
mov edi, eax
add esp, 0xc
mov ecx, edi
mov eax, dword [esp + 0x50]
sub ecx, edi
add eax, ecx
mov ecx, dword [esp + 0x298]
pop edi
pop esi
xor ecx, esp
call fcn.00407506
add esp, 0x294
ret