Function at 0x401000
Capabilities:
Encode data using xor
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x270
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x28], eax
mov ecx, dword [ebp + 0x14]
mov edi, dword [ebp + 0x10]
lea eax, [esp + 0xac]
not eax
mov dword [esp + 0x5c], eax
mov eax, ecx
mov dword [esp + 0x4c], 0
mov dword [esp + 0x20], edi
jmp 0x401052
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x20], ecx
mov eax, esi
inc eax
mov dword [esp + 0x1c], edi
mov esi, eax
test al, 3
je 0x401070
movzx eax, byte [eax]
jmp 0x40108e
mov eax, dword [eax]
mov edx, eax
not edx
and edx, 0x80808080
mov ecx, eax
xor ecx, 0x25252525
add ecx, 0xfefefeff
test ecx, edx
je 0x4010e7
cmp al, 0x25
je 0x401162
mov edi, dword [ebp + 8]
test al, al
je 0x40364f
test edi, edi
je 0x401040
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0x1c]
sub ecx, ebx
lea edx, [ecx + 1]
cmp edx, 0x200
jl 0x4010e0
add dword [esp + 0x4c], ecx
push ecx
push dword [ebp + 0xc]
push ebx
call edi
add esp, 0xc
test eax, eax
je 0x403675
mov edi, eax
mov eax, esi
movzx eax, byte [esi]
mov dword [esp + 0x20], edi
jmp 0x401044
mov edi, ebx
jmp 0x401044
mov ecx, dword [esp + 0x1c]
sub ecx, dword [esp + 0x20]
add ecx, 0x200
jmp 0x401136
mov edx, dword [esp + 0x20]
mov dword [edx], eax
add edx, 4
mov dword [esp + 0x20], edx
mov eax, dword [esi + 4]
add esi, 4
mov edx, eax
not edx
and edx, 0x80808080
mov edi, eax
xor edi, 0x25252525
add edi, 0xfefefeff
add ecx, 0xfffffffc
test edi, edx
jne 0x40108e
mov edi, eax
and edi, 0xfefefefe
add edi, edi
mov ebx, eax
xor ebx, 0x1010101
sub edi, ebx
test edi, edx
jne 0x401096
cmp dword [ebp + 8], 0
je 0x401100
cmp ecx, 4
jge 0x401100
jmp 0x40108e
add esi, 2
mov ecx, esi
xor ebx, ebx
mov esi, dword [esp + 0x20]
jmp 0x401183
mov edx, 1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
or ebx, edx
inc ecx
movzx eax, byte [ecx - 1]
lea edi, [eax - 0x20]
cmp edi, 0x3f
ja case.0x401194.33
mov edx, 2
jmp dword [edi*4 + 0x44b564]
mov edx, 4
jmp case.0x401194.43
mov edx, 0x400
jmp case.0x401194.43
mov edx, 0x100
test ebx, 0x100
je case.0x401194.43
mov edx, 0x800
test ebx, 0x800
je case.0x401194.43
mov edx, 0x1900
jmp case.0x401194.43
mov edx, 8
jmp case.0x401194.43
mov edx, 0x40
jmp case.0x401194.43
or ebx, 0x10
movzx eax, byte [ecx]
jmp 0x4011e1
dec ecx
mov dword [esp + 8], ebx
cmp al, 0x2a
mov edi, dword [esp + 0x1c]
jne 0x401201
mov eax, dword [esp + 0x28]
mov ebx, dword [eax]
add eax, 4
mov dword [esp + 0x28], eax
movzx eax, byte [ecx + 1]
inc ecx
jmp 0x40122b
mov edx, eax
add dl, 0xd0
xor ebx, ebx
cmp dl, 9
ja 0x40122b
xor ebx, ebx
nop
lea edx, [ebx + ebx*4]
movzx eax, al
lea ebx, [eax + edx*2]
add ebx, 0xffffffd0
movzx eax, byte [ecx + 1]
inc ecx
mov edx, eax
add dl, 0xd0
cmp dl, 0xa
jb 0x401210
mov dword [esp + 4], 0xffffffff
cmp al, 0x2e
mov dword [esp + 0x34], ebx
jne 0x4012a8
movzx eax, byte [ecx + 1]
cmp al, 0x2a
jne 0x40125d
mov eax, dword [esp + 0x28]
mov edx, dword [eax]
mov dword [esp + 4], edx
add eax, 4
mov dword [esp + 0x28], eax
movzx eax, byte [ecx + 2]
add ecx, 2
jmp 0x4012a8
inc ecx
mov edx, eax
add dl, 0xd0
mov dword [esp + 4], 0
cmp dl, 9
ja 0x4012a8
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, al
lea edx, [ebx + ebx*4]
lea eax, [eax + edx*2]
mov ebx, eax
and ebx, 0xffffffcf
add ebx, ebx
xor eax, 0x30
sub ebx, eax
movzx eax, byte [ecx + 1]
inc ecx
mov edx, eax
add dl, 0xd0
cmp dl, 0xa
jb 0x401280
mov dword [esp + 4], ebx
movzx eax, al
add eax, 0xffffffb7
cmp eax, 0x31
ja case.0x4012b3.74
jmp dword [eax*4 + 0x44b664]
inc ecx
movzx edx, byte [ecx]
mov dword [esp + 0x58], ecx
movzx eax, dl
add eax, 0xffffffbf
cmp eax, 0x37
ja case.0x4012d1.67
jmp dword [eax*4 + 0x44b72c]
test byte [esp + 8], 0x20
jne 0x4017ad
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
add eax, 4
mov dword [esp + 0x28], eax
xor edi, edi
cmp dl, 0x75
je 0x401d36
test ecx, ecx
jns 0x401d36
neg ecx
mov dword [esp + 0x18], ecx
mov edx, dword [esp + 8]
or edx, 0x80
jmp 0x401d52
movzx edx, byte [ecx + 1]
cmp dl, 0x6c
jne 0x4017f4
or dword [esp + 8], 0x20
add ecx, 2
jmp case.0x4012b3.74
lea eax, [ecx + 1]
movzx edx, byte [ecx + 1]
cmp edx, 0x33
je 0x401b9d
cmp edx, 0x36
jne 0x401bae
cmp byte [ecx + 2], 0x34
jne 0x401ba7
or dword [esp + 8], 0x20
add ecx, 3
jmp case.0x4012b3.74
cmp byte [ecx + 1], 0x68
je 0x4017fa
inc ecx
or dword [esp + 8], 0x200
jmp case.0x4012b3.74
mov edi, str.0123456789ABCDEFXP
cmp dl, 0x45
je 0x401386
mov edi, str.0123456789abcdefxp
mov eax, dword [esp + 0x28]
fld qword [eax]
mov eax, 6
mov ecx, dword [esp + 4]
cmp ecx, 0xffffffff
je 0x40139c
mov eax, ecx
mov dword [esp + 0x18], eax
or eax, 0x80000000
sub esp, 0x18
mov dword [esp + 0x10], eax
fstp qword [esp + 8]
lea eax, [esp + 0x58]
mov dword [esp + 4], eax
lea eax, [esp + 0x84]
mov dword [esp], eax
lea ecx, [esp + 0x2c]
lea edx, [esp + 0x3c]
call fcn.004036b0
add esp, 0x18
test eax, eax
je 0x4013de
or dword [esp + 8], 0x80
add dword [esp + 0x28], 8
mov byte [esp + 0x38], 0
mov byte [esp + 0x44], 0
mov edx, dword [esp + 8]
mov ecx, edx
xor ecx, 0xffffff7f
or edx, 0x80
mov al, 0x2d
test edx, ecx
jne 0x401417
mov al, 0x20
test byte [esp + 8], 4
jne 0x401417
mov al, 0x2b
test byte [esp + 8], 2
je 0x401420
mov byte [esp + 0x44], 1
mov byte [esp + 0x45], al
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x14]
cmp eax, 0x7000
je 0x402940
mov dword [esp + 0x30], eax
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], ecx
movzx ecx, byte [ecx]
mov byte [esp + 0xac], cl
lea eax, [esp + 0xad]
mov edi, dword [esp + 0x18]
test edi, edi
je 0x40146d
movzx ecx, byte [section..data]
mov byte [esp + 0xad], cl
lea eax, [esp + 0xae]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x24]
lea edx, [eax - 1]
cmp edx, edi
jbe 0x401483
lea eax, [edi + 1]
mov dword [esp + 0x24], eax
cmp eax, 2
mov dword [esp + 0x2c], eax
jb 0x401542
mov ebx, edi
cmp edi, edx
jb 0x401498
mov ebx, edx
lea edi, [ebx - 1]
mov edx, 1
cmp edi, 7
jb 0x401519
mov dword [esp + 0x50], ebx
mov edi, ebx
and edi, 0xfffffff8
xor edx, edx
mov ebx, dword [esp + 0xc]
mov ecx, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [ebx + edx + 1]
mov byte [ecx + edx], al
movzx eax, byte [ebx + edx + 2]
mov byte [ecx + edx + 1], al
movzx eax, byte [ebx + edx + 3]
mov byte [ecx + edx + 2], al
movzx eax, byte [ebx + edx + 4]
mov byte [ecx + edx + 3], al
movzx eax, byte [ebx + edx + 5]
mov byte [ecx + edx + 4], al
movzx eax, byte [ebx + edx + 6]
mov byte [ecx + edx + 5], al
movzx eax, byte [ebx + edx + 7]
mov byte [ecx + edx + 6], al
movzx eax, byte [ebx + edx + 8]
mov byte [ecx + edx + 7], al
add edx, 8
cmp edi, edx
jne 0x4014c0
add ecx, edx
mov dword [esp + 4], ecx
inc edx
mov ebx, dword [esp + 0x50]
and ebx, 7
je 0x401542
mov edi, dword [esp + 0xc]
add edi, edx
xor edx, edx
mov ecx, dword [esp + 4]
nop
nop
nop
nop
nop
nop
movzx eax, byte [edi + edx]
mov byte [ecx + edx], al
inc edx
cmp ebx, edx
jne 0x401530
add ecx, edx
mov dword [esp + 4], ecx
mov eax, dword [esp + 0x10]
movzx eax, byte [eax + 0xe]
mov byte [esp + 0x39], al
mov eax, dword [esp + 0x30]
test eax, eax
jle 0x402014
dec eax
mov byte [esp + 0x3a], 0x2b
mov edi, eax
jmp 0x402020
mov eax, str.0123456789ABCDEFXP
mov dword [esp + 0x54], edx
cmp dl, 0x41
je 0x40157a
mov eax, str.0123456789abcdefxp
mov dword [esp + 0xc], eax
mov ecx, 6
mov eax, dword [esp + 4]
cmp eax, 0xffffffff
mov edx, dword [esp + 8]
je 0x401592
mov ecx, eax
mov dword [esp + 0x50], ecx
mov eax, dword [esp + 0x28]
mov ecx, dword [eax + 4]
test ecx, ecx
jns 0x4015b2
mov eax, edx
not eax
or eax, 0xffffff7f
add edx, eax
add edx, 0x81
mov dword [esp + 8], edx
mov eax, dword [esp + 0x28]
mov edi, dword [eax]
xor edx, 0xffffff7f
mov ebx, dword [esp + 8]
or ebx, 0x80
mov al, 0x2d
test ebx, edx
mov edx, dword [esp + 8]
mov dword [esp + 0x30], edi
jne 0x401716
mov al, 0x20
test dl, 4
jne 0x401716
mov al, 0x2b
test dl, 2
jne 0x401716
mov dword [esp + 4], 0
jmp 0x401720
mov dword [esp + 0x30], str.0123456789ABCDEFXP
cmp dl, 0x42
je 0x401616
mov dword [esp + 0x30], str.0123456789abcdefxp
mov byte [esp + 0x44], 0
test byte [esp + 8], 8
je 0x401638
cmp dl, 0x42
setne al
mov word [esp + 0x44], 0x3002
shl al, 5
or al, 0x42
mov byte [esp + 0x46], al
mov dword [esp + 0x24], 0x180
mov ecx, 0x180
jmp 0x40189c
mov edi, str.0123456789ABCDEFXP
cmp dl, 0x47
je 0x401659
mov edi, str.0123456789abcdefxp
mov eax, dword [esp + 0x28]
fld qword [eax]
mov ecx, dword [esp + 4]
cmp ecx, 1
mov eax, ecx
adc eax, 0
mov edx, 6
cmp ecx, 0xffffffff
mov ebx, dword [esp + 8]
je 0x40167b
mov edx, eax
mov dword [esp + 0xc], edx
lea eax, [edx - 1]
or eax, 0x80000000
sub esp, 0x18
fstp qword [esp + 8]
lea ecx, [esp + 0x58]
mov dword [esp + 4], ecx
lea ecx, [esp + 0x84]
mov dword [esp], ecx
mov dword [esp + 0x10], eax
lea ecx, [esp + 0x2c]
lea edx, [esp + 0x3c]
call fcn.004036b0
add esp, 0x18
test eax, eax
je 0x4016be
or ebx, 0x80
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0xc]
cmp eax, ecx
jb 0x4016cc
mov eax, ecx
mov dword [esp + 0x10], edi
mov dword [esp + 8], ebx
cmp eax, 2
mov edi, eax
jb 0x40176e
mov edx, dword [esp + 0x14]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, edi
not eax
and eax, 1
mov ebx, edi
and ebx, 0xfffffffe
sub ebx, eax
cmp byte [edx + ebx], 0x30
jne 0x40176e
dec edi
lea eax, [ecx - 1]
cmp edi, 2
jb 0x401770
cmp ecx, 1
mov ecx, eax
jne 0x4016f0
jmp 0x401770
mov byte [esp + 0x45], al
mov al, 1
mov dword [esp + 4], eax
mov edi, ecx
and edi, 0xfffff
sar ecx, 0x14
mov edx, ecx
not edx
or edx, 0x7ff
lea ebx, [ecx + edx]
inc ebx
test ebx, ebx
je 0x401bd3
mov eax, 0xffffffff
mov ebx, dword [esp + 0x30]
add ebx, eax
mov eax, 0xfffff
adc edi, eax
lea eax, [ecx + edx]
add eax, 0xfffffc02
mov dword [esp + 0x2c], eax
add ebx, 1
mov dword [esp + 0x30], ebx
adc edi, 0
jmp 0x401bea
mov eax, ecx
add dword [esp + 0x28], 8
mov dword [esp + 0x24], edi
mov ecx, dword [esp + 0x40]
cmp ecx, 0xfffffffd
jl 0x40180a
cmp ecx, dword [esp + 0xc]
jg 0x40180a
test ecx, ecx
jle 0x402401
sub edi, ecx
mov dword [esp + 0x18], edi
jg 0x40240d
mov dword [esp + 0x18], 0
jmp 0x40240d
mov ecx, dword [esp + 0x28]
lea eax, [ecx + 8]
mov dword [esp + 0xc], eax
mov edi, dword [ecx]
mov eax, dword [ecx + 4]
cmp dl, 0x75
je 0x401d40
test eax, eax
jns 0x401d40
neg edi
mov dword [esp + 0x18], edi
mov ecx, 0
sbb ecx, eax
mov edx, dword [esp + 8]
or edx, 0x80
mov edi, ecx
mov eax, dword [esp + 0xc]
mov dword [esp + 0x28], eax
jmp 0x401d52
inc ecx
jmp 0x4012be
add ecx, 2
or dword [esp + 8], 0x200
jmp case.0x4012b3.74
cmp eax, edi
jle 0x4020f6
dec edi
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x10]
jmp 0x4013e3
and dword [esp + 8], 0xffffffef
mov dword [esp + 4], 8
mov dword [esp + 0x30], str.0123456789ABCDEFXP
mov eax, edx
cmp dl, 0x58
je 0x401844
mov dword [esp + 0x30], str.0123456789abcdefxp
mov dword [esp + 0x24], 0x440
mov byte [esp + 0x44], 0
mov ecx, 0x440
test byte [esp + 8], 8
je 0x40189c
cmp al, 0x58
setne al
mov word [esp + 0x44], 0x3002
shl al, 5
or al, 0x58
mov byte [esp + 0x46], al
jmp 0x40189c
mov byte [esp + 0x44], 0
test byte [esp + 8], 8
je 0x401887
mov word [esp + 0x44], 0x3001
mov dword [esp + 0x24], 0x330
mov dword [esp + 0x30], str.0123456789ABCDEFXP
mov ecx, 0x330
mov dword [esp + 0x10], ecx
test byte [esp + 8], 0x20
jne 0x4018b8
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
xor edi, edi
add eax, 4
mov dword [esp + 0x28], eax
jmp 0x4018ca
mov eax, dword [esp + 0x28]
mov edx, dword [eax]
mov edi, dword [eax + 4]
lea ecx, [eax + 8]
mov dword [esp + 0x28], ecx
mov ecx, edx
mov dword [esp + 0x40], 0
mov byte [esp + 0x38], 0
mov dword [esp + 0x18], ecx
mov dword [esp + 0x2c], edi
or ecx, edi
jne 0x4018f3
mov byte [esp + 0x44], 0
cmp dword [esp + 4], 0
je 0x401bb7
lea eax, [esp + 0x26c]
mov dword [esp + 0xc], eax
mov ebx, dword [esp + 0x10]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, 0xffffffff
mov cl, bh
shl edi, cl
not edi
mov ebx, dword [esp + 0x18]
mov edx, ebx
not edx
or edx, edi
add edx, ebx
mov eax, dword [esp + 0x24]
mov cl, ah
mov edi, dword [esp + 0x2c]
shrd ebx, edi, cl
mov ecx, dword [esp + 0x30]
movzx ecx, byte [ecx + edx + 1]
mov edx, dword [esp + 0xc]
mov byte [edx - 1], cl
mov cl, ah
shr edi, cl
test ah, 0x20
mov dword [esp + 0x10], eax
jne 0x401960
mov ecx, ebx
mov ebx, edi
jmp 0x401964
mov ecx, edi
xor ebx, ebx
lea eax, [edx - 1]
mov dword [esp + 0x18], ecx
or ecx, ebx
jne 0x40197e
lea ecx, [esp + 0x26c]
sub ecx, eax
cmp ecx, dword [esp + 4]
jge 0x4019e2
mov dword [esp + 0x2c], ebx
mov dword [esp + 0xc], eax
test byte [esp + 8], 0x40
mov ebx, dword [esp + 0x10]
je 0x401910
inc ebx
mov dword [esp + 0x24], ebx
mov ecx, ebx
and ecx, 0xf
mov edi, ebx
shr edi, 4
mov eax, edi
xor eax, 0xfffffff0
or edi, 0xf
and edi, eax
cmp ecx, edi
jne 0x401910
and ebx, 0xfffffff0
mov dword [esp + 0x24], ebx
movzx eax, byte [0x44e001]
mov ecx, eax
add cl, al
and cl, 0x48
sub al, cl
add al, 0xa4
mov byte [edx - 2], al
add edx, 0xfffffffe
mov ebx, dword [esp + 0x24]
mov dword [esp + 0xc], edx
jmp 0x401910
mov edi, dword [esp + 0x10]
shl edi, 0x14
and edi, 0xf000000
add edi, ecx
mov dword [esp + 0x10], edi
mov dword [esp + 0x24], ecx
mov dword [esp + 0x18], 0
mov ebx, dword [esp + 4]
jmp 0x402a78
mov eax, dword [esp + 0x28]
mov eax, dword [eax]
mov edx, str.null
test eax, eax
je 0x401a1b
mov edx, eax
mov ecx, dword [esp + 4]
mov eax, ecx
test ecx, ecx
jns 0x401a2a
mov eax, 0xffffffff
test dl, 3
je 0x4027ea
mov ecx, edx
add edx, eax
cmp dword [esp + 4], 0
je 0x402850
cmp byte [ecx], 0
je 0x4028d0
mov ebx, ecx
inc ecx
lea edi, [eax - 1]
test cl, 3
je 0x4028e5
test edi, edi
je 0x402921
cmp byte [ecx], 0
je 0x40291f
mov ecx, ebx
lea ecx, [ebx + 2]
lea edi, [eax - 2]
test cl, 3
je 0x4028e5
test edi, edi
je 0x402921
cmp byte [ecx], 0
je 0x40291f
mov ecx, ebx
lea ecx, [ebx + 3]
lea edi, [eax - 3]
test cl, 3
je 0x4028e5
test edi, edi
je 0x402921
cmp byte [ecx], 0
je 0x40291f
mov ecx, ebx
lea ecx, [ebx + 4]
add eax, 0xfffffffc
test cl, 3
je 0x4028e7
test eax, eax
je 0x401ac6
mov edx, ecx
mov esi, dword [esp + 0x20]
jmp 0x402921
mov byte [esp + 0x26b], dl
mov dword [esp + 0x24], 1
mov byte [esp + 0x44], 0
mov byte [esp + 0x38], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x10], 0
lea ecx, [esp + 0x26b]
mov dword [esp + 8], 0
mov dword [esp + 0x18], 0
xor ebx, ebx
mov dword [esp + 0x34], 0
jmp 0x402a7a
mov ecx, dword [esp + 0x28]
movzx eax, byte [ecx]
add ecx, 4
mov dword [esp + 0x28], ecx
mov byte [esp + 0x26b], al
mov dword [esp + 0x24], 1
mov byte [esp + 0x44], 0
mov byte [esp + 0x38], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x10], 0
lea ecx, [esp + 0x26b]
jmp 0x402948
mov eax, dword [esp + 0x28]
fld qword [eax]
add eax, 8
mov dword [esp + 0x28], eax
test dword [esp + 8], 0x100
jne 0x401f27
jmp 0x402199
mov edx, dword [esp + 0x28]
mov eax, dword [edx]
mov ecx, dword [esp + 0x4c]
sub ecx, edi
add ecx, esi
mov dword [eax], ecx
add edx, 4
mov dword [esp + 0x28], edx
jmp 0x40351d
cmp byte [ecx + 2], 0x32
je 0x4021ef
mov ecx, eax
jmp case.0x4012b3.74
mov dword [esp + 0x58], eax
jmp 0x4012c2
mov dword [esp + 0x24], 0
mov dword [esp + 0x10], 0
lea ecx, [esp + 0x26c]
jmp 0x402948
xor eax, eax
mov ecx, dword [esp + 0x30]
or ecx, edi
je 0x401be2
mov eax, 0xfffffc02
mov dword [esp + 0x2c], eax
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x50]
lea ecx, [eax*4]
xor ebx, ebx
mov eax, 0x8000000
shrd ebx, eax, cl
mov edx, 0x8000000
shr edx, cl
test cl, 0x20
je 0x401c0f
mov ebx, edx
xor edx, edx
cmp dword [esp + 0x50], 0xf
jl 0x401c1a
xor ebx, ebx
xor edx, edx
mov eax, dword [esp + 0x30]
shld edi, eax, 8
shl eax, 8
add eax, ebx
mov dword [esp + 0x30], eax
adc edi, edx
mov edx, dword [esp + 4]
movzx ecx, dl
lea eax, [esp + 0x44]
mov word [ecx + eax + 1], 0x7830
or dl, 2
mov byte [esp + 0x44], dl
mov ecx, edi
shr ecx, 0x1c
mov eax, dword [esp + 0xc]
movzx ecx, byte [eax + ecx]
mov byte [esp + 0xac], cl
mov ebx, dword [esp + 0x50]
test ebx, ebx
je 0x401d1a
movzx ecx, byte [section..data]
mov byte [esp + 0xad], cl
lea eax, [esp + 0xae]
mov dword [esp + 0x14], eax
mov ecx, ebx
cmp ebx, 0xd
mov edx, dword [esp + 0x54]
jb 0x401c8f
mov ecx, 0xd
mov eax, ebx
sub eax, ecx
jg 0x401c97
xor eax, eax
mov dword [esp + 0x18], eax
mov eax, ecx
and eax, 3
je 0x4021f7
mov dword [esp + 4], ecx
xor edx, edx
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x10], eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, edi
shr eax, 0x18
and eax, 0xf
mov ecx, dword [esp + 0xc]
movzx eax, byte [ecx + eax]
shld edi, ebx, 4
mov byte [esp + edx + 0xae], al
mov eax, dword [esp + 0x10]
shl ebx, 4
inc edx
cmp eax, edx
jne 0x401cc0
mov dword [esp + 0x30], ebx
lea eax, [esp + 0xae]
lea ebx, [eax + edx]
mov ecx, dword [esp + 4]
sub ecx, edx
mov edx, dword [esp + 0x54]
cmp dword [esp + 0x50], 4
jae 0x402209
lea eax, [esp + 0xae]
mov dword [esp + 4], eax
jmp 0x40228d
lea ebx, [esp + 0xad]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], 0
mov dword [esp + 4], ebx
jmp 0x402289
mov dword [esp + 0x18], ecx
mov edx, dword [esp + 8]
jmp 0x401d52
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x28], ecx
mov edx, dword [esp + 8]
mov dword [esp + 0x18], edi
mov edi, eax
mov dword [esp + 8], edx
test edx, 0x100
jne 0x401eee
mov dword [esp + 0x2c], edi
movzx edx, byte [0x44e001]
mov eax, edx
add al, dl
and al, 0x48
mov ah, dl
sub ah, al
add ah, 0xa4
mov byte [esp + 0x50], ah
xor dl, 0xa4
mov byte [esp + 0x10], dl
mov edi, 0x200
xor edx, edx
mov ebx, dword [esp + 8]
mov dword [esp + 0x30], edx
mov ecx, dword [esp + 0x18]
cmp ecx, 0x5f5e100
mov edx, dword [esp + 0x2c]
mov eax, edx
sbb eax, 0
jb 0x401dd0
push 0
push 0x5f5e100
push edx
push ecx
mov dword [esp + 0x28], ecx
call fcn.0040c650
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x18]
imul ecx, eax, 0x5f5e100
sub edx, ecx
mov ecx, eax
jmp 0x401ddc
mov dword [esp + 0x2c], 0
mov edx, ecx
xor ecx, ecx
lea eax, [esp + 0x64]
add eax, edi
mov dword [esp + 0xc], eax
test bl, 0x40
mov dword [esp + 0x18], ecx
jne 0x401e30
nop
mov ecx, edx
mov eax, edx
mov edx, 0x51eb851f
mul edx
shr edx, 5
imul eax, edx, 0x64
mov ebx, ecx
sub ebx, eax
movzx eax, word [ebx + ebx + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [esp + edi + 0x6a], ax
add edi, 0xfffffffe
cmp ecx, 0x64
jae 0x401df0
mov ebx, dword [esp + 8]
mov edx, dword [esp + 0x30]
jmp 0x401ea0
mov eax, edx
test edx, edx
mov edx, dword [esp + 0x30]
je 0x401ea0
mov ecx, dword [esp + 0xc]
jmp 0x401e72
mov dword [esp + 0xc], ecx
mov ecx, edx
mov ebx, eax
mov edx, 0xcccccccd
mul edx
shr edx, 3
lea eax, [edx + edx]
lea eax, [eax + eax*4]
sub ebx, eax
or bl, 0x30
mov byte [esp + edi + 0x6b], bl
dec edi
mov eax, edx
mov edx, ecx
mov ecx, dword [esp + 0xc]
mov ebx, dword [esp + 8]
test eax, eax
je 0x401ea4
test bl, 0x40
je 0x401e40
cmp edx, 3
je 0x401e83
mov dword [esp + 0xc], ecx
inc edx
jmp 0x401e44
mov edx, eax
movzx eax, byte [esp + 0x50]
mov byte [esp + edi + 0x6b], al
mov eax, edx
dec edi
dec ecx
xor edx, edx
test eax, eax
jne 0x401e72
jmp 0x401ea4
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x18]
or eax, dword [esp + 0x2c]
jne 0x401ec7
jmp 0x401f6e
inc edx
mov byte [esp + edi + 0x6b], 0x30
dec edi
lea eax, [esp + edi]
add eax, 0x6c
cmp eax, ecx
je 0x401d90
test bl, 0x40
je 0x401ec1
cmp edx, 3
jne 0x401ec0
movzx eax, byte [esp + 0x10]
mov byte [esp + edi + 0x6b], al
dec edi
dec ecx
xor edx, edx
jmp 0x401ec7
mov edx, dword [esp + 0x18]
mov eax, 1
mov ecx, dword [esp + 4]
cmp ecx, 0xffffffff
je 0x401f02
mov eax, ecx
mov dword [esp + 4], 0
cmp edx, 0x400
mov ecx, edi
sbb ecx, 0
jb 0x401f1b
mov dword [esp + 4], eax
mov dword [esp + 0x60], edx
mov dword [esp + 0x64], edi
fild qword [esp + 0x60]
xor eax, eax
mov ecx, dword [esp + 8]
test ecx, 0x800
sete al
fld qword [eax*8 + 0x44b550]
cmp ecx, 0x3ffffff
ja 0x401f67
fld st(0)
fchs
fxch st(1)
fucom st(2)
fnstsw ax
sahf
jbe 0x402114
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
jbe 0x402114
fstp st(0)
fstp st(0)
jmp 0x402199
cmp byte [esp + edi + 0x6c], 0x30
sete ch
cmp edi, 0x200
setne cl
mov byte [esp + 0x38], 0
mov byte [esp + 0x44], 0
mov eax, ebx
xor ebx, 0xffffff7f
or eax, 0x80
mov dl, 0x2d
test eax, ebx
jne 0x401fae
mov dl, 0x20
test byte [esp + 8], 4
jne 0x401fae
mov dl, 0x2b
test byte [esp + 8], 2
je 0x401fb7
mov byte [esp + 0x44], 1
mov byte [esp + 0x45], dl
and cl, ch
movzx eax, cl
add edi, eax
lea ecx, [esp + edi]
add ecx, 0x6c
lea edx, [edi - 0x200]
neg edx
mov dword [esp + 0x24], edx
cmp edi, 0x200
jne 0x401fea
mov byte [ecx - 1], 0x30
dec ecx
mov dword [esp + 0x24], 1
mov edx, 1
mov dword [esp + 0x18], 0
cmp dword [esp + 4], 0
jg 0x402001
mov dword [esp + 4], 0
add edx, 0x3000000
mov dword [esp + 0x10], edx
mov ebx, dword [esp + 4]
jmp 0x402a7a
mov byte [esp + 0x3a], 0x2d
mov edi, 1
sub edi, eax
cmp edi, 0x64
mov eax, 4
sbb eax, 0xffffffff
mov dword [esp + 0xc], eax
mov eax, edi
mov ecx, 0xcccccccd
mul ecx
shr edx, 2
and edx, 0xfffffffe
lea eax, [edx + edx*4]
mov dword [esp + 0x10], eax
mov ebx, edi
mov eax, edi
mov ecx, 0x66666667
imul ecx
mov ecx, edx
mov eax, edx
shr eax, 0x1f
sar ecx, 2
add ecx, eax
mov eax, ecx
mov edx, 0x66666667
imul edx
sub ebx, dword [esp + 0x10]
mov eax, edx
shr eax, 0x1f
sar edx, 2
add edx, eax
add edx, edx
lea edx, [edx + edx*4]
mov eax, ecx
sub eax, edx
or bl, 0x30
mov edx, dword [esp + 0xc]
mov byte [esp + 0x38], dl
mov byte [esp + edx + 0x38], bl
add al, 0x30
mov byte [esp + edx + 0x37], al
cmp edi, 0x64
jb 0x4020d4
mov ebx, edx
mov eax, edi
mov ecx, 0x51eb851f
imul ecx
mov ecx, edx
mov eax, edx
shr eax, 0x1f
sar ecx, 5
add ecx, eax
mov eax, ecx
mov edx, 0x66666667
imul edx
mov eax, edx
shr eax, 0x1f
shr edx, 2
add edx, eax
add edx, edx
lea eax, [edx + edx*4]
mov edx, ecx
sub edx, eax
add dl, 0x30
lea eax, [esp + 0x38]
mov byte [ebx + eax - 2], dl
mov eax, dword [esp + 0x18]
sub eax, dword [esp + 0x2c]
inc eax
mov dword [esp + 0x18], eax
mov dword [esp + 0x40], ecx
mov dword [esp + 0x10], 0x3000001
mov edx, dword [esp + 4]
jmp 0x402a69
mov dword [esp + 0x18], 0
sub eax, 1
mov edi, dword [esp + 0x10]
jb 0x4013e3
mov dword [esp + 0x18], eax
jmp 0x4013e3
fdiv st(2), st(0)
mov eax, dword [esp + 8]
lea ecx, [eax + 0x1000000]
cmp eax, 0x2ffffff
ja 0x402191
fucom st(2)
fnstsw ax
sahf
jbe 0x402139
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
ja 0x402191
fdiv st(2), st(0)
mov eax, dword [esp + 8]
lea ecx, [eax + 0x2000000]
cmp eax, 0x1ffffff
ja 0x402191
fucom st(2)
fnstsw ax
sahf
jbe 0x40215e
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
ja 0x402191
fdiv st(2), st(0)
mov eax, dword [esp + 8]
lea ecx, [eax + 0x3000000]
cmp eax, 0xffffff
ja 0x402191
fucom st(2)
fnstsw ax
sahf
jbe 0x40363e
fxch st(2)
fucom st(1)
fstp st(1)
fnstsw ax
sahf
fldz
fxch st(1)
fxch st(2)
jbe 0x40363e
fstp st(0)
fstp st(0)
mov dword [esp + 8], ecx
mov ecx, 6
mov eax, dword [esp + 4]
cmp eax, 0xffffffff
je 0x4021a9
mov ecx, eax
sub esp, 0x18
fstp qword [esp + 8]
lea eax, [esp + 0x58]
mov dword [esp + 4], eax
lea eax, [esp + 0x84]
mov dword [esp], eax
mov dword [esp + 0x30], ecx
mov dword [esp + 0x10], ecx
lea ecx, [esp + 0x2c]
lea edx, [esp + 0x3c]
call fcn.004036b0
add esp, 0x18
test eax, eax
je 0x40240d
or dword [esp + 8], 0x80
jmp 0x40240d
add ecx, 3
jmp case.0x4012b3.74
lea ebx, [esp + 0xae]
cmp dword [esp + 0x50], 4
jb 0x401d0a
mov dword [esp + 0x10], edi
mov eax, ecx
mov ecx, dword [esp + 0x30]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 4], eax
mov eax, edi
shr eax, 0x18
and eax, 0xf
mov edx, dword [esp + 0xc]
movzx eax, byte [edx + eax]
mov byte [ebx], al
mov eax, edi
shr eax, 0x14
and eax, 0xf
movzx eax, byte [edx + eax]
mov byte [ebx + 1], al
mov eax, edi
shr eax, 0x10
and eax, 0xf
movzx eax, byte [edx + eax]
mov byte [ebx + 2], al
mov eax, edi
mov edi, dword [esp + 0x10]
shld edi, ecx, 0x10
shl ecx, 0x10
shr eax, 0xc
and eax, 0xf
movzx eax, byte [edx + eax]
mov byte [ebx + 3], al
mov eax, dword [esp + 4]
add ebx, 4
mov dword [esp + 0x10], edi
add eax, 0xfffffffc
jne 0x402220
lea eax, [esp + 0xae]
mov dword [esp + 4], eax
mov edx, dword [esp + 0x54]
cmp dl, 0x41
setne al
shl al, 5
or al, 0x50
mov byte [esp + 0x39], al
mov edi, dword [esp + 0x2c]
test edi, edi
js 0x4022c8
mov byte [esp + 0x3a], 0x2b
cmp edi, 0x3e7
jg 0x4022d7
cmp edi, 0x63
jle 0x4023e1
mov dword [esp + 0x50], ebx
mov dword [esp + 0xc], 5
jmp 0x4022e3
mov byte [esp + 0x3a], 0x2d
neg edi
cmp edi, 0x3e7
jle 0x4022b1
mov dword [esp + 0x50], ebx
mov dword [esp + 0xc], 6
mov dword [esp + 0x10], 0
mov dword [esp + 0x2c], edi
mov eax, dword [esp + 0x2c]
mov ecx, 0xcccccccd
mul ecx
shr edx, 2
and edx, 0xfffffffe
lea eax, [edx + edx*4]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x2c]
mov edi, 0x66666667
imul edi
mov ecx, edx
mov eax, edx
shr eax, 0x1f
sar ecx, 2
add ecx, eax
mov eax, ecx
imul edi
mov ebx, dword [esp + 0x2c]
sub ebx, dword [esp + 0x30]
mov edi, dword [esp + 0xc]
mov eax, edi
mov byte [esp + 0x38], al
or bl, 0x30
mov byte [esp + edi + 0x38], bl
mov eax, edx
shr eax, 0x1f
sar edx, 2
add edx, eax
add edx, edx
lea eax, [edx + edx*4]
sub ecx, eax
add cl, 0x30
mov byte [esp + edi + 0x37], cl
cmp byte [esp + 0x10], 0
mov ebx, dword [esp + 0x50]
jne 0x40281b
mov eax, dword [esp + 0x2c]
mov ecx, 0x51eb851f
imul ecx
mov ecx, edx
mov eax, edx
shr eax, 0x1f
sar ecx, 5
add ecx, eax
mov eax, ecx
mov edx, 0x66666667
imul edx
mov eax, edx
shr eax, 0x1f
sar edx, 2
add edx, eax
add edx, edx
lea eax, [edx + edx*4]
sub ecx, eax
add cl, 0x30
lea eax, [esp + 0x38]
mov edx, dword [esp + 0xc]
mov byte [edx + eax - 2], cl
mov eax, dword [esp + 0x2c]
cmp eax, 0x3e8
jl 0x40281b
mov ecx, 0x10624dd3
mul ecx
mov ecx, edx
shr ecx, 6
mov eax, ecx
mov edx, 0x1999999a
mul edx
add edx, edx
lea eax, [edx + edx*4]
sub ecx, eax
or cl, 0x30
lea eax, [esp + 0x38]
mov edx, dword [esp + 0xc]
mov byte [edx + eax - 3], cl
jmp 0x40281b
cmp edi, 9
jle 0x4027f3
mov dword [esp + 0x50], ebx
mov dword [esp + 0xc], 4
mov al, 1
mov dword [esp + 0x10], eax
jmp 0x4022eb
cmp eax, edi
jl 0x402407
mov eax, edi
sub eax, ecx
mov dword [esp + 0x18], eax
mov byte [esp + 0x38], 0
mov byte [esp + 0x44], 0
mov edx, dword [esp + 8]
mov ecx, edx
xor ecx, 0xffffff7f
or edx, 0x80
mov al, 0x2d
test edx, ecx
jne 0x402441
mov al, 0x20
test byte [esp + 8], 4
jne 0x402441
mov al, 0x2b
test byte [esp + 8], 2
je 0x40244a
mov byte [esp + 0x44], 1
mov byte [esp + 0x45], al
mov ecx, dword [esp + 0x40]
cmp ecx, 0x7000
jne 0x402467
mov dword [esp + 0x10], 0
mov ecx, dword [esp + 0x14]
jmp 0x402948
test ecx, ecx
jle 0x402513
mov dword [esp + 0xc], 0
test byte [esp + 8], 0x40
je 0x402499
mov edi, 0x258
sub edi, ecx
mov eax, edi
mov edx, 0xaaaaaaab
mul edx
shr edx, 1
lea eax, [edx + edx*2]
sub edi, eax
mov dword [esp + 0xc], edi
cmp ecx, dword [esp + 0x24]
jae 0x402657
xor eax, eax
lea ecx, [esp + 0xac]
mov dword [esp + 0x10], ecx
jmp 0x4024d8
mov dword [esp + 0xc], ecx
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
movzx ecx, byte [ecx + eax]
lea edi, [edx + 1]
mov dword [esp + 0x10], edi
mov byte [edx], cl
inc eax
mov ecx, dword [esp + 0x40]
cmp eax, ecx
jae 0x4026b9
test byte [esp + 8], 0x40
je 0x4024b6
mov ecx, dword [esp + 0xc]
inc ecx
cmp ecx, 4
jne 0x4024b2
mov ecx, dword [esp + 8]
and ecx, 0x40
shr ecx, 6
mov dword [esp + 0xc], ecx
movzx ecx, byte [0x44e001]
mov edx, ecx
add dl, cl
and dl, 0x48
sub cl, dl
add cl, 0xa4
mov edx, dword [esp + 0x10]
mov byte [edx], cl
inc edx
jmp 0x4024ba
mov byte [esp + 0xac], 0x30
lea eax, [esp + 0xad]
mov dword [esp + 4], eax
mov edx, dword [esp + 0x18]
test edx, edx
je 0x402547
movzx eax, byte [section..data]
mov byte [esp + 0xad], al
lea eax, [esp + 0xae]
mov dword [esp + 4], eax
neg ecx
mov ebx, edx
cmp edx, ecx
jl 0x402551
mov ebx, ecx
test ebx, ebx
mov edx, dword [esp + 4]
mov dword [esp + 0xc], ebx
je 0x40258a
mov eax, edx
and eax, 3
je 0x40258a
mov edi, edx
not edi
and edi, 3
dec ebx
cmp edi, ebx
jb 0x402572
mov edi, ebx
lea eax, [edi + 1]
push eax
push 0x30
push edx
call fcn.0040c770
mov edx, dword [esp + 0x10]
add esp, 0xc
add edx, edi
inc edx
sub ebx, edi
cmp ebx, 4
jl 0x4025c7
mov eax, ebx
cmp ebx, 7
jl 0x40259b
mov eax, 7
neg eax
lea edi, [ebx + eax]
add edi, 3
and edi, 0xfffffffc
lea eax, [edi + 4]
push eax
push 0x30
push edx
mov dword [esp + 0x10], edx
call fcn.0040c770
mov edx, dword [esp + 0x10]
add esp, 0xc
add edx, edi
add edx, 4
sub ebx, edi
add ebx, 0xfffffffc
test ebx, ebx
je 0x4025dd
push ebx
push 0x30
push edx
mov edi, edx
call fcn.0040c770
mov edx, edi
add esp, 0xc
add edx, ebx
mov edi, dword [esp + 0x24]
mov eax, dword [esp + 0xc]
lea ecx, [edi + eax]
cmp ecx, dword [esp + 0x18]
jle 0x4025fa
mov edi, dword [esp + 0x18]
sub edi, dword [esp + 0xc]
mov dword [esp + 0x24], edi
test edi, edi
mov dword [esp + 4], edi
je 0x4028b7
mov eax, edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0x10], edx
cmp edx, ecx
jl 0x402618
mov dword [esp + 0x10], ecx
mov ecx, edi
and ecx, 3
je 0x402857
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, dword [esp + 0x14]
lea edx, [ebx + 1]
mov dword [esp + 0x14], edx
movzx edx, byte [ebx]
mov byte [eax + edi], dl
inc edi
cmp ecx, edi
jne 0x402630
mov edx, eax
add edx, edi
mov eax, edx
mov ecx, dword [esp + 4]
sub ecx, edi
jmp 0x402859
xor eax, eax
mov edi, 0xffffffff
mov ebx, 1
lea edx, [esp + 0xac]
jmp 0x4026a2
mov ecx, dword [esp + 8]
and ecx, 0x40
shr ecx, 6
mov dword [esp + 0xc], ecx
movzx ecx, byte [0x44e001]
xor cl, 0xa4
mov byte [edx], cl
inc edx
mov ecx, dword [esp + 0x14]
movzx ecx, byte [ecx + ebx - 1]
mov byte [edx], cl
mov ecx, edx
inc edx
inc eax
dec edi
inc ebx
cmp eax, dword [esp + 0x24]
jae 0x402748
test byte [esp + 8], 0x40
je 0x402687
mov ecx, dword [esp + 0xc]
inc ecx
cmp ecx, 4
je 0x40266c
mov dword [esp + 0xc], ecx
jmp 0x402687
mov edi, dword [esp + 0x10]
mov dword [esp + 4], edi
cmp dword [esp + 0x18], 0
je 0x4026dd
movzx ecx, byte [section..data]
mov byte [edx + 1], cl
add edx, 2
mov ecx, dword [esp + 0x40]
mov dword [esp + 4], edx
mov edx, dword [esp + 0x24]
mov edi, edx
sub edi, ecx
cmp edi, dword [esp + 0x18]
jbe 0x4026f5
mov edx, dword [esp + 0x18]
add edx, ecx
mov dword [esp + 0x24], edx
cmp eax, edx
jae 0x40271c
mov edi, dword [esp + 4]
nop
nop
nop
mov ecx, dword [esp + 0x14]
movzx ecx, byte [ecx + eax]
mov byte [edi], cl
inc edi
inc eax
mov edx, dword [esp + 0x24]
cmp eax, edx
jb 0x402700
mov dword [esp + 4], edi
mov ecx, dword [esp + 0x40]
lea eax, [esp + 0xac]
mov edi, dword [esp + 0x10]
sub edi, eax
add edi, 0x3000000
mov dword [esp + 0x10], edi
mov eax, dword [esp + 0x18]
sub eax, edx
add eax, ecx
mov dword [esp + 0x18], eax
mov edx, dword [esp + 4]
jmp 0x4029ec
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x40]
mov dword [esp + 4], ecx
sub ecx, eax
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0xc]
jbe 0x4029b2
test byte [esp + 8], 0x40
jne 0x4028d4
cmp dword [esp + 4], eax
je 0x402957
mov eax, edx
and eax, 3
je 0x402957
mov ecx, 2
sub ecx, dword [esp + 0x2c]
and ecx, 3
mov eax, dword [esp + 4]
sub eax, ebx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x30], ecx
cmp ecx, eax
mov ecx, dword [esp + 0x10]
jb 0x4027a8
mov ecx, eax
mov dword [esp + 0x10], ecx
lea eax, [ecx + 1]
push eax
push 0x30
push edx
call fcn.0040c770
add esp, 0xc
add edi, dword [esp + 4]
mov eax, dword [esp + 0x30]
cmp edi, eax
jb 0x4027c9
mov edi, eax
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x10]
lea edx, [eax + ecx]
add edx, 2
mov eax, dword [esp + 4]
sub eax, edi
sub eax, ebx
mov edi, eax
mov ecx, dword [esp + 0xc]
jmp 0x40295b
mov ebx, edx
mov ecx, edx
jmp 0x4028e7
mov eax, edi
mov ecx, 0x66666667
imul ecx
mov byte [esp + 0x38], 3
mov eax, edx
shr eax, 0x1f
shr edx, 2
add edx, eax
add edx, edx
lea eax, [edx + edx*4]
mov ecx, edi
sub ecx, eax
add cl, 0x30
mov byte [esp + 0x3b], cl
add dword [esp + 0x28], 8
mov eax, ebx
sub eax, dword [esp + 4]
mov dword [esp + 0x40], eax
mov eax, ebx
not eax
lea ecx, [esp + 0xac]
and eax, ecx
and ebx, dword [esp + 0x5c]
sub ebx, eax
mov dword [esp + 0x24], ebx
xor ebx, ebx
mov dword [esp + 0x10], 0x3000001
jmp 0x402a7a
mov ebx, ecx
jmp 0x402921
mov ecx, edi
mov edx, dword [esp + 0xc]
sub edx, dword [esp + 0x10]
cmp edx, 0xfffffffc
mov edx, eax
ja 0x4028b7
mov eax, edx
mov edx, dword [esp + 0x14]
lea edi, [edx + 1]
mov dword [esp + 0x14], edi
movzx edx, byte [edx]
mov byte [eax], dl
mov edx, dword [esp + 0x14]
lea edi, [edx + 1]
mov dword [esp + 0x14], edi
movzx edx, byte [edx]
mov byte [eax + 1], dl
mov edx, dword [esp + 0x14]
lea edi, [edx + 1]
mov dword [esp + 0x14], edi
movzx edx, byte [edx]
mov byte [eax + 2], dl
mov edx, dword [esp + 0x14]
lea edi, [edx + 1]
mov dword [esp + 0x14], edi
movzx edx, byte [edx]
mov byte [eax + 3], dl
mov edx, eax
add edx, 4
add ecx, 0xfffffffc
jne 0x402868
mov eax, dword [esp + 0xc]
add eax, dword [esp + 4]
sub dword [esp + 0x18], eax
mov dword [esp + 0x10], 0x3000001
jmp 0x4029ec
mov ebx, ecx
jmp 0x40291f
mov edi, dword [esp + 0x10]
test edi, edi
jne 0x402993
jmp 0x4029b2
mov eax, edi
cmp eax, 4
jb 0x40290d
mov edx, dword [ecx]
mov edi, edx
not edi
add edx, 0xfefefeff
and edx, edi
test edx, 0x80808080
jne 0x402911
add ecx, 4
add eax, 0xfffffffc
cmp eax, 3
ja 0x4028ec
test eax, eax
je 0x40291f
lea edx, [ecx + eax]
cmp byte [ecx], 0
je 0x40291f
inc ecx
dec eax
jne 0x402914
mov ecx, edx
mov edx, ecx
add dword [esp + 0x28], 4
sub edx, ebx
mov dword [esp + 0x24], edx
mov ecx, ebx
mov byte [esp + 0x44], 0
mov byte [esp + 0x38], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x18], 0
xor ebx, ebx
jmp 0x402a7a
mov edi, dword [esp + 0x10]
cmp edi, 4
jb 0x40298f
mov ebx, edi
and edi, 0xfffffffc
push edi
push 0x30
push edx
mov dword [esp + 0x10], edx
call fcn.0040c770
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
add esp, 0xc
and ebx, 3
add edx, edi
mov edi, ebx
test edi, edi
jne 0x402993
jmp 0x4029b2
mov byte [edx], 0x30
dec edi
inc edx
test edi, edi
je 0x4029b2
test byte [esp + 8], 0x40
je 0x40298a
inc ecx
cmp ecx, 4
jne 0x40298a
movzx eax, byte [0x44e001]
xor al, 0xa4
mov byte [edx], al
xor ecx, ecx
inc edx
test edi, edi
jne 0x402993
mov eax, edx
lea ecx, [esp + 0xac]
xor eax, ecx
mov ecx, edx
and ecx, dword [esp + 0x5c]
add ecx, ecx
sub ecx, eax
add ecx, 0x3000000
mov dword [esp + 0x10], ecx
cmp dword [esp + 0x18], 0
je 0x4029e4
movzx eax, byte [section..data]
mov byte [edx], al
inc edx
jmp 0x4029ec
mov dword [esp + 0x18], 0
mov edi, dword [esp + 8]
test edi, 0x100
je 0x402a69
mov eax, edi
and eax, 0x400
sete byte [esp + 0x38]
mov byte [esp + 0x39], 0x20
cmp edi, 0x1000000
jb 0x402a69
mov dword [esp + 4], edx
mov ecx, edi
shr ecx, 0x18
mov ebx, eax
shr ebx, 0xa
mov edx, 2
sub edx, ebx
cmp eax, 1
mov eax, 0
adc al, 1
test edi, 0x800
jne 0x402a45
movzx ecx, byte [ecx + str._kMGT]
mov byte [esp + edx + 0x38], cl
jmp 0x402a61
movzx ecx, byte [ecx + str._KMGT]
mov byte [esp + edx + 0x38], cl
test edi, 0x1000
jne 0x402a61
movzx eax, al
mov byte [esp + eax + 0x39], 0x69
inc eax
mov edx, dword [esp + 4]
mov byte [esp + 0x38], al
lea eax, [esp + 0xac]
sub edx, eax
mov dword [esp + 0x24], edx
xor ebx, ebx
mov ecx, eax
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x24]
cmp ebx, ecx
jg 0x402a88
mov ebx, ecx
movsx eax, byte [esp + 0x44]
movsx edi, byte [esp + 0x38]
mov edx, dword [esp + 0x18]
mov dword [esp + 4], ebx
add edx, ebx
add edx, eax
add edx, edi
cmp dword [esp + 0x34], edx
jg 0x402aaa
mov dword [esp + 0x34], edx
sub dword [esp + 0x34], edx
sub dword [esp + 4], ecx
mov ecx, dword [esp + 8]
test cl, 1
jne 0x402acd
test cl, 0x10
mov edi, dword [esp + 0x1c]
jne 0x402ad3
and ecx, 0xffffffae
mov dword [esp + 8], ecx
jmp 0x402af1
mov edi, dword [esp + 0x1c]
jmp 0x402af1
mov ecx, dword [esp + 4]
cmp dword [esp + 0x34], ecx
jg 0x402ae1
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x34]
mov dword [esp + 4], ecx
mov dword [esp + 0x34], 0
mov ecx, dword [esp + 0x34]
add ecx, dword [esp + 4]
jne 0x402b04
mov edx, dword [esp + 0xc]
jmp 0x402fbe
mov edx, dword [esp + 8]
mov ecx, edx
xor ecx, 0xfffffffe
or edx, 1
test edx, ecx
jne 0x402c72
cmp dword [esp + 0x34], 0
jg 0x402b42
jmp 0x402c72
mov eax, dword [esp + 0x34]
sub eax, edx
mov dword [esp + 0x34], eax
test eax, eax
jle 0x402c6d
cmp dword [ebp + 8], 0
je 0x402b70
mov ecx, esi
sub ecx, edi
mov eax, 0x21c7fe
sub eax, ecx
sub eax, ecx
xor ecx, 0x200
and eax, 0x400
sub eax, ecx
mov ecx, dword [esp + 0x34]
mov edx, ecx
cmp ecx, eax
jl 0x402b74
mov edx, eax
jmp 0x402b74
mov edx, dword [esp + 0x34]
test edx, edx
mov dword [esp + 0x20], edx
mov dword [esp + 0x1c], edi
je 0x402bc0
mov eax, esi
and eax, 3
je 0x402bc0
mov edi, esi
not edi
and edi, 3
lea ebx, [edx - 1]
cmp edi, ebx
jb 0x402b97
mov edi, ebx
lea eax, [edi + 1]
push eax
push 0x20
push esi
call fcn.0040c770
add esp, 0xc
add esi, edi
inc esi
sub ebx, edi
mov edi, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
cmp ebx, 4
jge 0x402bc7
jmp 0x402bff
mov ebx, edx
cmp ebx, 4
jl 0x402bff
mov eax, ebx
cmp ebx, 7
jl 0x402bd3
mov eax, 7
neg eax
lea edi, [ebx + eax]
add edi, 3
and edi, 0xfffffffc
lea eax, [edi + 4]
push eax
push 0x20
push esi
call fcn.0040c770
add esp, 0xc
add esi, edi
add esi, 4
sub ebx, edi
add ebx, 0xfffffffc
mov edi, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
test ebx, ebx
je 0x402c15
push ebx
push 0x20
push esi
call fcn.0040c770
mov edx, dword [esp + 0x2c]
add esp, 0xc
add esi, ebx
cmp dword [ebp + 8], 0
je 0x402b30
mov ecx, esi
not ecx
and ecx, edi
mov eax, edi
not eax
and eax, esi
sub eax, ecx
lea ecx, [eax + 1]
cmp ecx, 0x200
jl 0x402b30
mov ecx, eax
mov edx, dword [esp + 0x4c]
and ecx, edx
xor edx, eax
lea edx, [edx + ecx*2]
mov dword [esp + 0x4c], edx
push eax
push dword [ebp + 0xc]
push edi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x403675
mov esi, eax
mov edi, eax
mov edx, dword [esp + 0x20]
jmp 0x402b30
movzx eax, byte [esp + 0x44]
lea ecx, [esp + 0x45]
mov dword [esp + 0x14], ecx
jmp 0x402c89
mov esi, eax
mov edi, eax
movzx eax, byte [esp + 0x44]
test al, al
je 0x402d8d
movsx edx, al
mov ebx, edi
sub ebx, esi
add ebx, 0x200
cmp ebx, edx
jl 0x402ca4
mov ebx, edx
cmp dword [ebp + 8], 0
jne 0x402cac
mov ebx, edx
sub al, bl
mov byte [esp + 0x44], al
test ebx, ebx
je 0x402d4b
mov eax, ebx
and eax, 3
je 0x402d80
mov dword [esp + 0x1c], edi
xor edx, edx
nop
nop
nop
nop
nop
mov edi, dword [esp + 0x14]
lea ecx, [edi + 1]
mov dword [esp + 0x14], ecx
movzx ecx, byte [edi]
mov byte [esi + edx], cl
inc edx
cmp eax, edx
jne 0x402cd0
add esi, edx
mov eax, ebx
sub eax, edx
mov edi, dword [esp + 0x1c]
cmp ebx, 4
jb 0x402d4b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x14]
lea edx, [ecx + 1]
mov dword [esp + 0x14], edx
movzx ecx, byte [ecx]
mov byte [esi], cl
mov ecx, dword [esp + 0x14]
lea edx, [ecx + 1]
mov dword [esp + 0x14], edx
movzx ecx, byte [ecx]
mov byte [esi + 1], cl
mov ecx, dword [esp + 0x14]
lea edx, [ecx + 1]
mov dword [esp + 0x14], edx
movzx ecx, byte [ecx]
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x14]
lea edx, [ecx + 1]
mov dword [esp + 0x14], edx
movzx ecx, byte [ecx]
mov byte [esi + 3], cl
add esi, 4
add eax, 0xfffffffc
jne 0x402d00
cmp dword [ebp + 8], 0
je 0x402c84
mov eax, esi
sub eax, edi
cmp eax, 0x1ff
jl 0x402c84
add dword [esp + 0x4c], eax
push eax
push dword [ebp + 0xc]
push edi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x402c80
jmp 0x403675
mov eax, ebx
cmp ebx, 4
jae 0x402d00
jmp 0x402d4b
mov dword [esp + 0x1c], edi
mov eax, dword [esp + 0x10]
mov ecx, eax
shr ecx, 0x18
mov dword [esp + 0x20], ecx
xor edi, edi
test byte [esp + 8], 0x40
je 0x402dbd
and eax, 0xffffff
add eax, dword [esp + 4]
mov edi, dword [esp + 0x20]
lea ecx, [edi + 1]
xor edx, edx
div ecx
sub edi, edx
cmp dword [esp + 4], 0
mov edx, dword [esp + 0xc]
jle 0x403631
mov eax, dword [esp + 4]
jmp 0x402df4
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 4]
sub eax, dword [esp + 0x10]
test eax, eax
jle 0x402fb5
mov dword [esp + 4], eax
mov ecx, eax
cmp dword [ebp + 8], 0
je 0x402e17
mov eax, dword [esp + 0x1c]
sub eax, esi
add eax, 0x200
mov ecx, dword [esp + 4]
mov ebx, ecx
cmp ecx, eax
jl 0x402e17
mov ecx, eax
test byte [esp + 8], 0x40
mov dword [esp + 0x10], ecx
jne 0x402e9c
test ecx, ecx
je 0x402e5b
mov eax, esi
and eax, 3
je 0x402e5b
mov ebx, esi
not ebx
and ebx, 3
dec ecx
cmp ebx, ecx
jb 0x402e3b
mov ebx, ecx
lea eax, [ebx + 1]
push eax
push 0x30
push esi
mov dword [esp + 0x38], ecx
call fcn.0040c770
mov ecx, dword [esp + 0x38]
add esp, 0xc
add esi, ebx
inc esi
sub ecx, ebx
mov edx, dword [esp + 0xc]
cmp ecx, 4
jl 0x402e9c
mov eax, ecx
cmp ecx, 7
jl 0x402e6c
mov eax, 7
neg eax
lea ebx, [ecx + eax]
add ebx, 3
and ebx, 0xfffffffc
lea eax, [ebx + 4]
push eax
push 0x30
push esi
mov dword [esp + 0x38], ecx
call fcn.0040c770
mov ecx, dword [esp + 0x38]
add esp, 0xc
add esi, ebx
add esi, 4
sub ecx, ebx
add ecx, 0xfffffffc
mov edx, dword [esp + 0xc]
test ecx, ecx
je 0x402f00
test cl, 1
jne 0x402ec0
mov eax, ecx
cmp ecx, 1
jne 0x402f76
jmp 0x402f00
mov al, 0x30
test byte [esp + 8], 0x40
je 0x402eec
cmp edi, dword [esp + 0x20]
jne 0x402eeb
movzx eax, byte [0x44e001]
mov edi, ecx
mov ecx, eax
or cl, 0x5b
not al
or al, 0xa4
and al, cl
mov ecx, edi
not al
xor edi, edi
jmp 0x402eec
inc edi
mov byte [esi], al
inc esi
lea eax, [ecx - 1]
cmp ecx, 1
jne 0x402f76
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [ebp + 8], 0
je 0x402de4
mov ecx, esi
not ecx
mov edx, dword [esp + 0x1c]
and ecx, edx
mov eax, edx
not eax
and eax, esi
sub eax, ecx
lea ecx, [eax + 1]
cmp ecx, 0x200
jl 0x402de0
add dword [esp + 0x4c], eax
push eax
push dword [ebp + 0xc]
push edx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x403675
mov esi, eax
mov dword [esp + 0x1c], eax
jmp 0x402de0
movzx ecx, byte [0x44e001]
mov edx, ecx
or dl, 0x5b
not cl
or cl, 0xa4
and cl, dl
not cl
xor edi, edi
mov edx, dword [esp + 0xc]
mov byte [esi + 1], cl
add esi, 2
add eax, 0xfffffffe
je 0x402f00
mov cl, 0x30
test byte [esp + 8], 0x40
je 0x402fa1
cmp edi, dword [esp + 0x20]
jne 0x402fa0
movzx edx, byte [0x44e001]
mov ch, dl
or ch, 0x5b
not dl
or dl, 0xa4
and dl, ch
not dl
xor edi, edi
jmp 0x402fa3
inc edi
mov dl, 0x30
mov byte [esi], dl
test byte [esp + 8], 0x40
je 0x402f67
cmp edi, dword [esp + 0x20]
je 0x402f50
inc edi
jmp 0x402f67
movzx eax, byte [esp + 0x44]
mov edi, dword [esp + 0x1c]
lea ecx, [esp + 0x45]
mov dword [esp + 0x14], ecx
jmp 0x402fdd
mov esi, eax
mov edi, eax
mov edx, dword [esp + 0xc]
movzx eax, byte [esp + 0x44]
test al, al
je 0x4030ed
movsx edx, al
mov ebx, edi
sub ebx, esi
add ebx, 0x200
cmp ebx, edx
jl 0x402ff8
mov ebx, edx
cmp dword [ebp + 8], 0
jne 0x403000
mov ebx, edx
sub al, bl
mov byte [esp + 0x44], al
test ebx, ebx
je 0x40309b
mov eax, ebx
and eax, 3
je 0x4030e0
mov dword [esp + 0x1c], edi
xor edx, edx
nop
mov edi, dword [esp + 0x14]
lea ecx, [edi + 1]
mov dword [esp + 0x14], ecx
movzx ecx, byte [edi]
mov byte [esi + edx], cl
inc edx
cmp eax, edx
jne 0x403020
add esi, edx
mov eax, ebx
sub eax, edx
mov edi, dword [esp + 0x1c]
cmp ebx, 4
jb 0x40309b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x14]
lea edx, [ecx + 1]
mov dword [esp + 0x14], edx
movzx ecx, byte [ecx]
mov byte [esi], cl
mov ecx, dword [esp + 0x14]
lea edx, [ecx + 1]
mov dword [esp + 0x14], edx
movzx ecx, byte [ecx]
mov byte [esi + 1], cl
mov ecx, dword [esp + 0x14]
lea edx, [ecx + 1]
mov dword [esp + 0x14], edx
movzx ecx, byte [ecx]
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x14]
lea edx, [ecx + 1]
mov dword [esp + 0x14], edx
movzx ecx, byte [ecx]
mov byte [esi + 3], cl
add esi, 4
add eax, 0xfffffffc
jne 0x403050
cmp dword [ebp + 8], 0
je 0x402fd4
mov eax, esi
sub eax, edi
lea ecx, [eax + 1]
cmp ecx, 0x200
jl 0x402fd4
add dword [esp + 0x4c], eax
push eax
push dword [ebp + 0xc]
push edi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x402fd0
jmp 0x403675
mov eax, ebx
cmp ebx, 4
jae 0x403050
jmp 0x40309b
mov dword [esp + 0x1c], edi
mov ecx, dword [esp + 0x24]
test ecx, ecx
jne 0x403362
mov ecx, dword [esp + 0x18]
test ecx, ecx
mov edi, dword [esp + 0x1c]
jne 0x40324c
lea eax, [esp + 0x39]
mov dword [esp + 0x14], eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + 0x38]
test cl, cl
je 0x40350d
movsx edx, cl
mov eax, edi
sub eax, esi
add eax, 0x200
cmp eax, edx
jl 0x40313f
mov eax, edx
cmp dword [ebp + 8], 0
jne 0x403147
mov eax, edx
sub cl, al
mov byte [esp + 0x38], cl
test eax, eax
je 0x4031eb
mov ecx, eax
and ecx, 3
je 0x403230
mov dword [esp + 0x1c], edi
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, dword [esp + 0x14]
lea ebx, [edi + 1]
mov dword [esp + 0x14], ebx
movzx ebx, byte [edi]
mov byte [esi + edx], bl
inc edx
cmp ecx, edx
jne 0x403170
add esi, edx
mov ecx, eax
sub ecx, edx
mov edi, dword [esp + 0x1c]
cmp eax, 4
jb 0x4031eb
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x14]
lea edx, [eax + 1]
mov dword [esp + 0x14], edx
movzx eax, byte [eax]
mov byte [esi], al
mov eax, dword [esp + 0x14]
lea edx, [eax + 1]
mov dword [esp + 0x14], edx
movzx eax, byte [eax]
mov byte [esi + 1], al
mov eax, dword [esp + 0x14]
lea edx, [eax + 1]
mov dword [esp + 0x14], edx
movzx eax, byte [eax]
mov byte [esi + 2], al
mov eax, dword [esp + 0x14]
lea edx, [eax + 1]
mov dword [esp + 0x14], edx
movzx eax, byte [eax]
mov byte [esi + 3], al
add esi, 4
add ecx, 0xfffffffc
jne 0x4031a0
cmp dword [ebp + 8], 0
je 0x403120
mov eax, esi
sub eax, edi
cmp eax, 0x1ff
jl 0x403120
add dword [esp + 0x4c], eax
push eax
push dword [ebp + 0xc]
push edi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x403675
mov esi, eax
mov edi, eax
jmp 0x403120
mov ecx, eax
cmp eax, 4
jae 0x4031a0
jmp 0x4031eb
mov ecx, dword [esp + 0x18]
sub ecx, edx
je 0x40310d
mov eax, edi
sub eax, esi
add eax, 0x200
mov edx, ecx
mov dword [esp + 0x18], ecx
cmp ecx, eax
jl 0x403261
mov edx, eax
cmp dword [ebp + 8], 0
jne 0x40326b
mov edx, dword [esp + 0x18]
test edx, edx
mov dword [esp + 0x20], edx
mov dword [esp + 0x1c], edi
je 0x4032b0
mov eax, esi
and eax, 3
je 0x4032b0
mov ebx, esi
not ebx
and ebx, 3
lea edi, [edx - 1]
cmp ebx, edi
jb 0x40328e
mov ebx, edi
lea eax, [ebx + 1]
push eax
push 0x30
push esi
call fcn.0040c770
add esp, 0xc
add esi, ebx
inc esi
sub edi, ebx
mov edx, dword [esp + 0x20]
cmp edi, 4
jge 0x4032b7
jmp 0x4032eb
mov edi, edx
cmp edi, 4
jl 0x4032eb
mov eax, edi
cmp edi, 7
jl 0x4032c3
mov eax, 7
neg eax
lea ebx, [edi + eax]
add ebx, 3
and ebx, 0xfffffffc
lea eax, [ebx + 4]
push eax
push 0x30
push esi
call fcn.0040c770
add esp, 0xc
add esi, ebx
add esi, 4
sub edi, ebx
add edi, 0xfffffffc
mov edx, dword [esp + 0x20]
test edi, edi
je 0x403301
push edi
push 0x30
push esi
call fcn.0040c770
mov edx, dword [esp + 0x2c]
add esp, 0xc
add esi, edi
mov edi, dword [esp + 0x1c]
cmp dword [ebp + 8], 0
je 0x403240
mov eax, esi
sub eax, edi
cmp eax, 0x1ff
jl 0x403240
mov ecx, eax
mov edx, dword [esp + 0x4c]
and ecx, edx
xor edx, eax
lea edx, [edx + ecx*2]
mov dword [esp + 0x4c], edx
push eax
push dword [ebp + 0xc]
push edi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x403675
mov esi, eax
mov edi, eax
mov edx, dword [esp + 0x20]
jmp 0x403240
mov edx, ebx
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0xc]
sub ecx, edi
je 0x4030fd
mov eax, dword [esp + 0x1c]
sub eax, esi
add eax, 0x200
mov edi, ecx
cmp ecx, eax
jl 0x403375
mov edi, eax
cmp dword [ebp + 8], 0
jne 0x40337d
mov edi, ecx
cmp edi, 4
mov dword [esp + 0x20], edi
mov dword [esp + 0xc], ecx
jl 0x4033e0
lea ebx, [edi - 4]
mov eax, ebx
shr eax, 2
inc eax
and eax, 7
je 0x4033e4
mov dword [esp + 4], ebx
shl eax, 2
mov ebx, edx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [ebx + edx]
mov dword [esi + edx], ecx
add edx, 4
cmp eax, edx
jne 0x4033b0
add esi, edx
mov edi, dword [esp + 0x20]
mov ecx, edi
sub ecx, edx
add ebx, edx
mov eax, ecx
mov edx, ebx
mov ebx, dword [esp + 4]
cmp ebx, 0x1c
jae 0x4033f0
jmp 0x403431
mov eax, edi
jmp 0x403431
mov ecx, edi
cmp ebx, 0x1c
jb 0x403431
nop
nop
nop
nop
nop
mov eax, dword [edx]
mov dword [esi], eax
mov eax, dword [edx + 4]
mov dword [esi + 4], eax
mov eax, dword [edx + 8]
mov dword [esi + 8], eax
mov eax, dword [edx + 0xc]
mov dword [esi + 0xc], eax
mov eax, dword [edx + 0x10]
mov dword [esi + 0x10], eax
mov eax, dword [edx + 0x14]
mov dword [esi + 0x14], eax
mov eax, dword [edx + 0x18]
mov dword [esi + 0x18], eax
mov eax, dword [edx + 0x1c]
mov dword [esi + 0x1c], eax
add esi, 0x20
add edx, 0x20
lea eax, [ecx - 0x20]
add ecx, 0xffffffdc
cmp ecx, 0xfffffff8
mov ecx, eax
jb 0x4033f0
test eax, eax
je 0x4034b1
mov ecx, eax
and ecx, 7
je 0x403500
mov edi, edx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [edi + edx]
mov byte [esi + edx], bl
inc edx
cmp ecx, edx
jne 0x403450
add esi, edx
mov ecx, eax
sub ecx, edx
add edi, edx
mov edx, edi
mov edi, dword [esp + 0x20]
cmp eax, 8
jb 0x4034b1
nop
movzx eax, byte [edx]
mov byte [esi], al
movzx eax, byte [edx + 1]
mov byte [esi + 1], al
movzx eax, byte [edx + 2]
mov byte [esi + 2], al
movzx eax, byte [edx + 3]
mov byte [esi + 3], al
movzx eax, byte [edx + 4]
mov byte [esi + 4], al
movzx eax, byte [edx + 5]
mov byte [esi + 5], al
movzx eax, byte [edx + 6]
mov byte [esi + 6], al
movzx eax, byte [edx + 7]
add edx, 8
mov byte [esi + 7], al
add esi, 8
add ecx, 0xfffffff8
jne 0x403470
cmp dword [ebp + 8], 0
je 0x403356
mov ebx, edx
mov eax, esi
mov edx, dword [esp + 0x1c]
sub eax, edx
lea ecx, [eax + 1]
cmp ecx, 0x200
jl 0x403350
add dword [esp + 0x4c], eax
push eax
push dword [ebp + 0xc]
push edx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x403675
mov esi, eax
mov dword [esp + 0x1c], eax
jmp 0x403350
mov ecx, eax
cmp eax, 8
jae 0x403470
jmp 0x4034b1
test byte [esp + 8], 1
je 0x40351d
cmp dword [esp + 0x34], 0
jle 0x40351d
jne 0x403536
mov dword [esp + 0x20], esi
mov eax, dword [esp + 0x58]
inc eax
jmp 0x401052
sub dword [esp + 0x34], edx
je 0x40351d
mov dword [esp + 0x1c], edi
mov edi, esi
not edi
mov edx, dword [esp + 0x34]
cmp dword [ebp + 8], 0
je 0x403567
mov ecx, dword [esp + 0x1c]
mov eax, ecx
and eax, edi
not ecx
and ecx, esi
sub eax, ecx
add eax, 0x200
mov ecx, dword [esp + 0x34]
mov edx, ecx
cmp ecx, eax
jl 0x403567
mov edx, eax
test edx, edx
je 0x4035a0
mov eax, esi
and eax, 3
je 0x4035a0
and edi, 3
mov dword [esp + 0x20], edx
lea ebx, [edx - 1]
cmp edi, ebx
jb 0x403582
mov edi, ebx
lea eax, [edi + 1]
push eax
push 0x20
push esi
call fcn.0040c770
add esp, 0xc
sub ebx, edi
add esi, edi
inc esi
mov edx, dword [esp + 0x20]
jmp 0x4035a2
mov ebx, edx
cmp ebx, 4
mov edi, dword [esp + 0x1c]
jl 0x4035ca
nop
nop
nop
nop
nop
mov dword [esi], 0x20202020
add esi, 4
mov eax, ebx
xor eax, 4
and ebx, 0xfffffffb
add ebx, ebx
sub ebx, eax
cmp ebx, 3
jg 0x4035b0
test ebx, ebx
je 0x4035e4
push ebx
push 0x20
push esi
mov edi, edx
call fcn.0040c770
mov edx, edi
mov edi, dword [esp + 0x28]
add esp, 0xc
add esi, ebx
mov ebx, dword [ebp + 8]
test ebx, ebx
je 0x403530
mov eax, esi
sub eax, edi
lea ecx, [eax + 1]
cmp ecx, 0x200
jl 0x403530
mov esi, edi
mov ebx, edx
mov ecx, eax
mov edx, dword [esp + 0x4c]
and ecx, edx
xor edx, eax
lea edx, [edx + ecx*2]
mov dword [esp + 0x4c], edx
push eax
push dword [ebp + 0xc]
push edi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x403675
mov esi, eax
mov edx, ebx
mov edi, esi
jmp 0x403530
lea eax, [esp + 0x45]
mov dword [esp + 0x14], eax
jmp 0x4030f1
fstp st(1)
fdivp st(1)
or dword [esp + 8], 0x4000000
jmp 0x402199
test edi, edi
je 0x40367b
mov eax, dword [esp + 0x20]
mov ecx, eax
mov edx, dword [esp + 0x1c]
sub ecx, edx
test ecx, ecx
jle 0x403686
add dword [esp + 0x4c], ecx
push ecx
push dword [ebp + 0xc]
push edx
call edi
add esp, 0xc
mov edx, eax
jmp 0x403686
xor eax, eax
xor edx, edx
jmp 0x403686
mov eax, dword [esp + 0x20]
mov byte [eax], 0
mov edx, dword [esp + 0x1c]
mov ecx, eax
not ecx
and ecx, edx
not edx
and edx, eax
sub edx, ecx
mov eax, edx
mov ecx, dword [esp + 0x4c]
and eax, ecx
xor edx, ecx
lea eax, [edx + eax*2]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret