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, 0x268
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x24], eax
mov ebx, dword [ebp + 0x14]
mov esi, dword [ebp + 0x10]
mov dword [esp + 0x2c], 0
mov edi, esi
jmp 0x40103d
mov esi, eax
mov eax, ebx
movzx eax, byte [ebx]
mov edi, esi
mov byte [esi], al
inc esi
inc ebx
mov dword [esp + 0x20], edi
mov eax, ebx
test al, 3
je 0x401050
mov eax, ebx
movzx eax, byte [ebx]
jmp 0x401070
mov eax, ebx
mov eax, dword [ebx]
mov edx, eax
not edx
and edx, 0x80808080
mov ecx, eax
xor ecx, 0x25252525
add ecx, 0xfefefeff
test ecx, edx
je 0x4010ae
cmp al, 0x25
je 0x401104
test al, al
mov edi, dword [esp + 0x20]
je 0x4036cb
cmp dword [ebp + 8], 0
je 0x401039
mov ecx, esi
sub ecx, edi
cmp ecx, 0x1ff
jl 0x401039
add dword [esp + 0x2c], ecx
push ecx
push dword [ebp + 0xc]
push edi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x401030
jmp 0x4036ee
mov ecx, dword [esp + 0x20]
sub ecx, esi
add ecx, 0x200
jmp 0x4010ea
mov dword [esi], eax
add esi, 4
mov eax, dword [ebx + 4]
add ebx, 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 0x401070
lea edi, [eax - 0x1010101]
test edx, edi
jne 0x401078
cmp dword [ebp + 8], 0
je 0x4010c0
cmp ecx, 4
jge 0x4010c0
jmp 0x401070
mov ecx, ebx
add ecx, 2
xor ebx, ebx
jmp 0x401115
or ebx, 1
mov eax, ebx
inc ecx
mov ebx, eax
movzx eax, byte [ecx - 1]
lea edx, [eax - 0x20]
cmp edx, 0x3f
ja case.0x401121.33
jmp dword [edx*4 + 0x44c564]
or ebx, 4
jmp 0x401110
or ebx, 8
jmp 0x401110
or ebx, 0x400
jmp 0x401110
or ebx, 0x40
jmp 0x401110
test ebx, 0x100
jne 0x401154
or ebx, 0x100
jmp 0x401110
or ebx, 2
jmp 0x401110
mov edx, ebx
xor edx, 0xfffff7ff
mov eax, ebx
or eax, 0x800
test eax, edx
je 0x401112
mov edx, ebx
and edx, 0xffffefff
mov eax, ebx
xor eax, 0x1000
add eax, ebx
sub eax, edx
jmp 0x401112
mov edx, ebx
xor edx, 0x10
add edx, ebx
mov eax, ebx
and eax, 0xffffffef
sub edx, eax
movzx eax, byte [ecx]
mov ebx, edx
jmp 0x401192
dec ecx
mov edi, dword [esp + 0x20]
mov dword [esp + 8], ebx
cmp al, 0x2a
jne 0x4011b2
mov eax, dword [esp + 0x24]
mov ebx, dword [eax]
add eax, 4
mov dword [esp + 0x24], eax
movzx eax, byte [ecx + 1]
inc ecx
jmp 0x4011db
mov edx, eax
add dl, 0xd0
xor ebx, ebx
cmp dl, 9
ja 0x4011db
xor ebx, ebx
movzx eax, al
lea edx, [ebx + ebx*4]
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 0x4011c0
mov dword [esp + 4], 0xffffffff
cmp al, 0x2e
mov dword [esp + 0x3c], ebx
jne 0x401267
movzx eax, byte [ecx + 1]
cmp al, 0x2a
jne 0x40120d
mov eax, dword [esp + 0x24]
mov edx, dword [eax]
mov dword [esp + 4], edx
add eax, 4
mov dword [esp + 0x24], eax
movzx eax, byte [ecx + 2]
add ecx, 2
jmp 0x401267
inc ecx
mov edx, eax
add dl, 0xd0
mov dword [esp + 4], 0
cmp dl, 9
ja 0x401267
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ebx
and edx, 0xfffffff5
mov edi, ebx
and edi, 0xa
or ebx, 0xa
imul ebx, edi
xor edi, 0xa
imul edi, edx
add ebx, edi
movzx eax, al
add ebx, eax
add ebx, 0xffffffd0
movzx eax, byte [ecx + 1]
inc ecx
mov edx, eax
add dl, 0xd0
cmp dl, 0xa
jb 0x401230
mov dword [esp + 4], ebx
mov edi, dword [esp + 0x20]
movzx eax, al
add eax, 0xffffffb7
cmp eax, 0x31
ja case.0x401272.74
jmp dword [eax*4 + 0x44c664]
inc ecx
movzx edx, byte [ecx]
mov dword [esp + 0x4c], ecx
movzx eax, dl
add eax, 0xffffffbf
cmp eax, 0x37
ja case.0x401290.67
jmp dword [eax*4 + 0x44c72c]
mov ecx, dword [esp + 8]
mov eax, ecx
xor eax, 0xffffffdf
or ecx, 0x20
test ecx, eax
je 0x4016db
mov ecx, dword [esp + 0x24]
lea ebx, [ecx + 8]
mov edi, dword [ecx]
mov dword [esp + 0x10], edi
mov eax, dword [ecx + 4]
cmp dl, 0x75
mov edi, dword [esp + 0x2c]
je 0x401cf6
test eax, eax
jns 0x401cf6
neg dword [esp + 0x10]
mov ecx, 0
sbb ecx, eax
mov edx, dword [esp + 8]
or edx, 0x80
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], ebx
jmp 0x401e27
movzx edx, byte [ecx + 1]
cmp dl, 0x6c
jne 0x4016c5
mov edx, dword [esp + 8]
mov eax, edx
not eax
or eax, 0xffffffdf
add edx, eax
add edx, 0x21
mov dword [esp + 8], edx
add ecx, 2
jmp case.0x401272.74
lea eax, [ecx + 1]
mov dword [esp + 0x4c], eax
movzx edx, byte [ecx + 1]
cmp edx, 0x33
je 0x401ce3
cmp edx, 0x36
jne 0x401281
cmp byte [ecx + 2], 0x34
jne 0x401ced
or dword [esp + 8], 0x20
add ecx, 3
jmp case.0x401272.74
cmp byte [ecx + 1], 0x68
je 0x4016cb
inc ecx
or dword [esp + 8], 0x200
jmp case.0x401272.74
mov eax, str.0123456789ABCDEFXP
cmp dl, 0x45
je 0x401376
mov eax, str.0123456789abcdefxp
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x24]
fld qword [eax]
mov eax, 6
mov ecx, dword [esp + 4]
cmp ecx, 0xffffffff
mov edi, dword [esp + 0x2c]
je 0x401394
mov eax, ecx
mov dword [esp + 0x10], 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 + 0x7c]
mov dword [esp], eax
lea ecx, [esp + 0x2c]
lea edx, [esp + 0x34]
call fcn.00403710
add esp, 0x18
test eax, eax
je 0x4013d3
or dword [esp + 8], 0x80
add dword [esp + 0x24], 8
mov ecx, edi
mov byte [esp + 0x34], 0
mov byte [esp + 0x44], 0
mov al, 0x2d
cmp byte [esp + 8], 0
js 0x4013ff
mov al, 0x20
test byte [esp + 8], 4
jne 0x4013ff
mov al, 0x2b
test byte [esp + 8], 2
je 0x401408
mov byte [esp + 0x44], 1
mov byte [esp + 0x45], al
mov edx, dword [esp + 0x40]
mov dword [esp + 0xc], 0
mov eax, dword [esp + 0x14]
cmp edx, 0x7000
mov dword [esp], eax
jne 0x40158c
mov dword [esp + 0x2c], ecx
jmp 0x4029b5
mov ecx, str.0123456789ABCDEFXP
cmp dl, 0x41
je 0x40143f
mov ecx, str.0123456789abcdefxp
mov dword [esp + 0x54], edx
mov dword [esp + 0x30], 6
mov eax, dword [esp + 4]
cmp eax, 0xffffffff
je 0x401458
mov dword [esp + 0x30], eax
mov dword [esp], ecx
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 4]
test edx, edx
js 0x40171a
mov ecx, dword [esp + 8]
jmp 0x401724
mov dword [esp + 0x28], str.0123456789ABCDEFXP
mov eax, edx
cmp dl, 0x42
je 0x40148a
mov dword [esp + 0x28], str.0123456789abcdefxp
mov byte [esp + 0x44], 0
test byte [esp + 8], 8
mov edx, dword [esp + 0x2c]
je 0x4014af
cmp al, 0x42
setne al
mov word [esp + 0x44], 0x3002
shl al, 5
or al, 0x42
mov byte [esp + 0x46], al
mov dword [esp + 0x1c], 0x180
mov ecx, 1
jmp 0x401973
mov edi, str.0123456789ABCDEFXP
cmp dl, 0x47
je 0x4014d0
mov edi, str.0123456789abcdefxp
mov eax, dword [esp + 0x24]
fld qword [eax]
mov ecx, dword [esp + 4]
cmp ecx, 1
mov eax, ecx
adc eax, 0
mov ebx, 6
cmp ecx, 0xffffffff
je 0x4014ee
mov ebx, eax
lea eax, [ebx - 1]
and eax, 0x7fffffff
lea ecx, [ebx*2 - 1]
sub ecx, eax
add ecx, 0x7fffffff
sub esp, 0x18
fstp qword [esp + 8]
lea eax, [esp + 0x58]
mov dword [esp + 4], eax
lea eax, [esp + 0x7c]
mov dword [esp], eax
mov dword [esp + 0x10], ecx
lea ecx, [esp + 0x2c]
lea edx, [esp + 0x34]
call fcn.00403710
add esp, 0x18
test eax, eax
je 0x40153b
or dword [esp + 8], 0x80
mov eax, dword [esp + 0x1c]
cmp eax, ebx
jb 0x401545
mov eax, ebx
mov dword [esp + 0x18], edi
mov ecx, eax
mov dword [esp + 0x10], eax
cmp eax, 2
jb 0x4018e8
mov edx, dword [esp + 0x14]
mov ecx, ebx
nop
nop
mov edi, dword [esp + 0x10]
cmp byte [edx + edi - 1], 0x30
jne 0x40216d
lea eax, [ecx - 1]
dec edi
mov dword [esp + 0x10], edi
cmp edi, 2
jb 0x40216f
cmp ecx, 1
mov ecx, eax
jne 0x401560
jmp 0x40216f
mov dword [esp + 0x30], edx
movzx ecx, byte [eax]
mov byte [esp + 0xa4], cl
lea eax, [esp + 0xa5]
mov edi, dword [esp + 0x10]
test edi, edi
je 0x4015cc
movzx ecx, byte [section..data]
mov edx, ecx
or dl, 2
not cl
or cl, 0xfd
and cl, dl
not cl
mov byte [esp + 0xa5], cl
lea eax, [esp + 0xa6]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x1c]
lea edx, [eax - 1]
cmp edx, edi
jbe 0x4015e2
lea eax, [edi + 1]
mov dword [esp + 0x1c], eax
mov dword [esp + 0xc], eax
cmp eax, 2
jb 0x4016a2
mov ebx, edi
cmp edi, edx
jb 0x4015f7
mov ebx, edx
lea edi, [ebx - 1]
mov edx, 1
cmp edi, 7
jb 0x401679
mov dword [esp + 0x28], ebx
mov edi, ebx
and edi, 0xfffffff8
xor edx, edx
mov ebx, dword [esp]
mov ecx, dword [esp + 4]
nop
nop
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 0x401620
add ecx, edx
mov dword [esp + 4], ecx
inc edx
mov ebx, dword [esp + 0x28]
and ebx, 7
je 0x4016a2
mov edi, dword [esp]
add edi, edx
xor edx, edx
mov ecx, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [edi + edx]
mov byte [ecx + edx], al
inc edx
cmp ebx, edx
jne 0x401690
add ecx, edx
mov dword [esp + 4], ecx
mov eax, dword [esp + 0x18]
movzx eax, byte [eax + 0xe]
mov byte [esp + 0x35], al
mov ecx, dword [esp + 0x30]
mov eax, ecx
dec eax
js 0x401d3d
mov byte [esp + 0x36], 0x2b
jmp 0x401d49
inc ecx
jmp 0x40127d
add ecx, 2
or dword [esp + 8], 0x200
jmp case.0x401272.74
mov eax, dword [esp + 0x24]
mov ecx, dword [eax]
add eax, 4
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], 0
cmp dl, 0x75
mov edi, dword [esp + 0x2c]
je 0x401e1f
test ecx, ecx
jns 0x401e1f
neg ecx
mov dword [esp + 0x10], ecx
mov edx, dword [esp + 8]
or edx, 0x80
jmp 0x401e27
mov ecx, dword [esp + 8]
or ecx, 0x80
mov eax, dword [esp + 0x24]
mov eax, dword [eax]
mov dword [esp + 4], eax
mov al, 0x2d
test cl, cl
mov dword [esp + 8], ecx
js 0x40174a
mov al, 0x20
test cl, 4
jne 0x40174a
mov al, 0x2b
test cl, 2
jne 0x40174a
xor ebx, ebx
jmp 0x401750
mov byte [esp + 0x45], al
mov bl, 1
mov edi, edx
and edi, 0xfffff
mov eax, edx
shr eax, 0x14
and eax, 0x7ff
xor eax, 0x3ff
shr edx, 0x13
and edx, 0x800
sub edx, eax
cmp edx, 0xfffffc01
mov ecx, dword [esp + 4]
jne 0x401791
xor edx, edx
mov eax, ecx
or eax, edi
je 0x40178b
mov edx, 0xfffffc02
mov dword [esp + 0x40], edx
jmp 0x4017a5
mov eax, 0xffffffff
add ecx, eax
mov eax, 0xfffff
adc edi, eax
add ecx, 1
adc edi, 0
shld edi, ecx, 8
shl ecx, 8
mov eax, dword [esp + 0x30]
cmp eax, 0xe
mov dword [esp + 0x50], edx
mov dword [esp + 4], ecx
jg 0x401804
mov dword [esp + 0x18], ebx
mov ebx, eax
and ebx, 4
mov ecx, eax
or ecx, 4
imul ecx, ebx
xor ebx, 4
and eax, 0xfb
imul eax, ebx
add ecx, eax
xor eax, eax
mov edx, 0x8000000
shrd eax, edx, cl
shr edx, cl
test cl, 0x20
je 0x4017f0
mov eax, edx
xor edx, edx
mov ecx, dword [esp + 4]
mov ebx, dword [esp + 0x18]
add ecx, eax
mov dword [esp + 4], ecx
adc edi, edx
mov edx, dword [esp + 0x50]
movzx eax, bl
lea ecx, [esp + 0x44]
mov word [eax + ecx + 1], 0x7830
or bl, 2
mov byte [esp + 0x44], bl
mov eax, edi
shr eax, 0x1c
mov ecx, dword [esp]
movzx eax, byte [ecx + eax]
mov byte [esp + 0xa4], al
mov ecx, dword [esp + 0x30]
test ecx, ecx
je 0x401d1f
movzx eax, byte [section..data]
xor al, 0xfd
mov byte [esp + 0xa5], al
lea eax, [esp + 0xa6]
mov dword [esp + 0x14], eax
mov ebx, ecx
cmp ecx, 0xd
jb 0x40185f
mov ebx, 0xd
mov eax, ecx
sub eax, ebx
mov dword [esp + 0x10], eax
jg 0x401871
mov dword [esp + 0x10], 0
mov eax, ebx
and eax, 3
je 0x4022c2
mov dword [esp + 0x18], ebx
xor edx, edx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 4]
nop
nop
nop
nop
nop
nop
mov ebx, edi
shr ebx, 0x18
and ebx, 0xf
mov ecx, dword [esp]
movzx ebx, byte [ecx + ebx]
shld edi, eax, 4
mov byte [esp + edx + 0xa6], bl
shl eax, 4
inc edx
cmp dword [esp + 0xc], edx
jne 0x401890
mov dword [esp + 4], eax
lea eax, [esp + 0xa6]
add eax, edx
mov dword [esp + 0x28], eax
mov ebx, dword [esp + 0x18]
sub ebx, edx
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x30]
cmp ecx, 4
jae 0x4022d6
lea ecx, [esp + 0xa6]
jmp 0x40235c
mov eax, ebx
jmp 0x40216f
and dword [esp + 8], 0xffffffef
mov dword [esp + 4], 8
mov dword [esp + 0x28], str.0123456789ABCDEFXP
mov eax, edx
cmp dl, 0x58
mov edx, dword [esp + 0x2c]
je 0x401917
mov dword [esp + 0x28], str.0123456789abcdefxp
mov dword [esp + 0x1c], 0x440
mov byte [esp + 0x44], 0
mov ecx, 4
test byte [esp + 8], 8
je 0x401973
cmp al, 0x58
setne al
mov word [esp + 0x44], 0x3002
shl al, 5
or al, 0x58
mov byte [esp + 0x46], al
jmp 0x401973
mov byte [esp + 0x44], 0
test byte [esp + 8], 8
je 0x40195a
mov word [esp + 0x44], 0x3001
mov dword [esp + 0x1c], 0x330
mov dword [esp + 0x28], str.0123456789ABCDEFXP
mov ecx, 3
mov edx, dword [esp + 0x2c]
test byte [esp + 8], 0x20
mov dword [esp + 0x2c], edx
jne 0x40198f
mov eax, dword [esp + 0x24]
mov edi, dword [eax]
add eax, 4
mov dword [esp + 0x24], eax
xor ebx, ebx
jmp 0x40199f
mov eax, dword [esp + 0x24]
mov edi, dword [eax]
mov ebx, dword [eax + 4]
lea edx, [eax + 8]
mov dword [esp + 0x24], edx
mov dword [esp + 0x40], 0
mov byte [esp + 0x34], 0
mov edx, edi
or edx, ebx
jne 0x4019c2
mov byte [esp + 0x44], 0
cmp dword [esp + 4], 0
je 0x401d03
mov edx, 0xffffffff
shl edx, cl
not edx
and edx, edi
mov eax, dword [esp + 0x1c]
mov cl, ah
shrd edi, ebx, cl
mov ecx, dword [esp + 0x28]
movzx ecx, byte [ecx + edx]
mov byte [esp + 0x263], cl
mov cl, ah
shr ebx, cl
test ah, 0x20
jne 0x4019f4
mov ecx, edi
mov edi, ebx
jmp 0x4019f8
mov ecx, ebx
xor edi, edi
mov dword [esp + 0xc], eax
mov dword [esp + 0x18], ecx
or ecx, edi
jne 0x401a1f
mov ecx, 1
cmp dword [esp + 4], 2
jge 0x401a1f
lea eax, [esp + 0x263]
mov dword [esp], eax
jmp 0x401b0c
lea eax, [esp + 0x263]
mov dword [esp], eax
lea ebx, [esp + 0x264]
mov dword [esp + 0x10], edi
test byte [esp + 8], 0x40
mov eax, dword [esp + 0xc]
jne 0x401a50
mov ecx, dword [esp]
mov dword [esp + 0x30], ecx
jmp 0x401a99
mov edx, ebx
inc eax
mov dword [esp + 0x1c], eax
mov ecx, eax
and ecx, 0xf
mov ebx, eax
shr eax, 4
mov edi, eax
xor edi, 0xfffffff0
or eax, 0xf
and eax, edi
cmp ecx, eax
jne 0x401a90
and ebx, 0xfffffff0
mov dword [esp + 0x1c], ebx
movzx eax, byte [0x44f001]
xor al, 0xe0
mov byte [edx - 2], al
add edx, 0xfffffffe
mov dword [esp + 0x30], edx
mov eax, dword [esp + 0x1c]
jmp 0x401a99
mov eax, dword [esp]
mov dword [esp + 0x30], eax
mov eax, ebx
mov ebx, 0xffffffff
mov cl, ah
shl ebx, cl
not ebx
mov edi, dword [esp + 0x18]
and ebx, edi
mov eax, dword [esp + 0x1c]
mov dword [esp + 0xc], eax
mov cl, ah
mov edx, dword [esp + 0x10]
shrd edi, edx, cl
mov eax, dword [esp + 0x28]
movzx eax, byte [eax + ebx]
mov ebx, dword [esp + 0x30]
mov byte [ebx - 1], al
mov eax, dword [esp + 0xc]
mov cl, ah
shr edx, cl
test ah, 0x20
jne 0x401ae0
mov ecx, edi
mov edi, edx
jmp 0x401ae4
mov ecx, edx
xor edi, edi
lea eax, [ebx - 1]
mov dword [esp], eax
mov dword [esp + 0x18], ecx
mov eax, ecx
or eax, edi
jne 0x401a30
lea ecx, [esp + 0x264]
sub ecx, dword [esp]
cmp ecx, dword [esp + 4]
jl 0x401a30
mov edi, dword [esp + 0xc]
shl edi, 0x14
and edi, 0xf000000
add edi, ecx
mov dword [esp + 0xc], edi
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x10], 0
jmp 0x402164
mov eax, dword [esp + 0x24]
mov eax, dword [eax]
mov edx, str.null
test eax, eax
je 0x401b41
mov edx, eax
mov eax, dword [esp + 4]
mov edi, eax
test eax, eax
jns 0x401b50
mov edi, 0xffffffff
test dl, 3
mov dword [esp], edx
je 0x4027e9
lea eax, [edi + edx]
cmp dword [esp + 4], 0
je 0x402990
cmp byte [edx], 0
je 0x40298a
mov dword [esp + 0x18], eax
lea ebx, [edx + 1]
mov eax, edi
not eax
mov ecx, edi
lea edi, [eax + edi*2]
test bl, 3
je 0x4027eb
test edi, edi
mov eax, dword [esp + 0x18]
je 0x402990
cmp byte [ebx], 0
je 0x40298e
lea ebx, [edx + 2]
add edi, edi
sub edi, ecx
test bl, 3
je 0x4027eb
test edi, edi
je 0x402990
cmp byte [ebx], 0
je 0x40298e
lea ebx, [edx + 3]
mov eax, edi
not eax
lea ecx, [eax + edi*2]
test bl, 3
je 0x4036bb
test ecx, ecx
je 0x4036c2
cmp byte [ebx], 0
je 0x40298e
mov eax, ecx
lea ebx, [edx + 4]
add eax, ecx
sub eax, edi
mov edi, eax
test bl, 3
je 0x4027eb
test edi, edi
je 0x401c02
mov dword [esp + 0x18], ebx
mov edx, dword [esp]
mov eax, dword [esp + 0x18]
jmp 0x402990
mov byte [esp + 0x263], dl
mov dword [esp + 0x1c], 1
mov byte [esp + 0x44], 0
mov byte [esp + 0x34], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0xc], 0
lea eax, [esp + 0x263]
mov dword [esp], eax
mov dword [esp + 8], 0
mov dword [esp + 0x10], 0
xor ecx, ecx
mov dword [esp + 0x3c], 0
jmp 0x402b4f
mov ecx, dword [esp + 0x24]
movzx eax, byte [ecx]
add ecx, 4
mov dword [esp + 0x24], ecx
mov byte [esp + 0x263], al
mov dword [esp + 0x1c], 1
mov byte [esp + 0x44], 0
mov byte [esp + 0x34], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0xc], 0
lea eax, [esp + 0x263]
jmp 0x402518
mov eax, dword [esp + 0x24]
fld qword [eax]
add eax, 8
mov dword [esp + 0x24], eax
test dword [esp + 8], 0x100
mov edx, dword [esp + 0x2c]
jne 0x402072
jmp 0x402265
mov edx, dword [esp + 0x24]
mov eax, dword [edx]
mov ecx, dword [esp + 0x2c]
sub ecx, edi
add ecx, esi
mov dword [eax], ecx
add edx, 4
mov dword [esp + 0x24], edx
jmp 0x403591
cmp byte [ecx + 2], 0x32
je 0x4022ba
mov ecx, dword [esp + 0x4c]
jmp case.0x401272.74
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], ebx
jmp 0x401e23
mov dword [esp + 0x1c], 0
mov dword [esp + 0xc], 0
lea eax, [esp + 0x264]
jmp 0x402518
lea eax, [esp + 0xa5]
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], 0
mov ecx, eax
mov dword [esp + 0x28], eax
jmp 0x40235c
mov byte [esp + 0x36], 0x2d
mov eax, 1
sub eax, ecx
mov dword [esp], eax
xor ecx, ecx
cmp eax, 0x64
setge cl
mov dword [esp + 0x30], ecx
mov ecx, 0x66666667
imul ecx
mov ecx, edx
mov eax, edx
shr eax, 0x1f
sar ecx, 2
add ecx, eax
lea eax, [ecx + ecx]
lea eax, [eax + eax*4]
mov ebx, dword [esp]
sub ebx, eax
mov eax, ecx
mov edx, 0x66666667
imul edx
mov eax, edx
shr eax, 0x1f
sar edx, 2
add edx, eax
mov eax, dword [esp + 0x30]
lea edi, [eax + 4]
mov dword [esp + 0x18], edi
add bl, 0x30
add edx, edx
lea edx, [edx + edx*4]
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x18]
mov byte [esp + 0x34], dl
mov byte [esp + eax + 0x38], bl
mov edi, dword [esp]
mov edx, ecx
sub edx, dword [esp + 0x28]
add dl, 0x30
mov byte [esp + eax + 0x37], dl
cmp edi, 0x64
jl 0x401df0
mov eax, edi
mov ecx, 0x51eb851f
mul ecx
mov ecx, edx
shr ecx, 5
mov eax, ecx
mov edx, 0x1999999a
mul edx
add edx, edx
lea eax, [edx + edx*4]
mov edx, ecx
sub edx, eax
or dl, 0x30
lea eax, [esp + 0x34]
mov edi, dword [esp + 0x18]
mov byte [edi + eax - 2], dl
mov edi, dword [esp + 0xc]
mov eax, edi
not eax
and eax, 1
and edi, 0xfffffffe
mov edx, dword [esp + 0x10]
sub edx, edi
add edx, eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x40], ecx
mov dword [esp + 0xc], 0x3000001
mov edx, dword [esp + 4]
jmp 0x402b3d
mov dword [esp + 0x10], ecx
mov edx, dword [esp + 8]
test edx, 0x100
mov dword [esp + 8], edx
jne 0x40202f
mov dword [esp + 0x54], esi
mov eax, edx
xor eax, 0xffffffbf
or edx, 0x40
and edx, eax
movzx ebx, byte [0x44f001]
mov eax, ebx
xor al, 0xe0
mov byte [esp + 0x30], al
mov eax, ebx
add al, bl
and al, 0xc0
sub bl, al
add bl, 0xe0
mov esi, 0x200
mov dword [esp], 0
mov ecx, dword [esp + 0x28]
mov dword [esp + 0xc], edx
mov byte [esp + 0x50], bl
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, dword [esp + 0x10]
cmp ebx, 0x5f5e100
mov eax, ecx
sbb eax, 0
jb 0x401ec0
push 0
push 0x5f5e100
push ecx
push ebx
call fcn.0040ca90
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0xc]
imul ecx, eax, 0x5f5e100
sub ebx, ecx
mov dword [esp + 0x10], eax
jmp 0x401ed0
mov dword [esp + 0x28], 0
mov dword [esp + 0x10], 0
lea eax, [esp + 0x5c]
lea edi, [eax + esi]
test edx, edx
je 0x401f60
test ebx, ebx
je 0x401fc0
mov eax, dword [esp]
jmp 0x401f26
mov dword [esp + 0x18], edi
mov edi, eax
mov eax, ebx
mov ecx, 0xcccccccd
mul ecx
shr edx, 3
lea eax, [edx + edx]
lea eax, [eax + eax*4]
sub ebx, eax
or bl, 0x30
mov byte [esp + esi + 0x63], bl
dec esi
mov ebx, edx
mov edx, dword [esp + 0xc]
mov eax, edi
mov edi, dword [esp + 0x18]
test ebx, ebx
je 0x401fc3
test edx, edx
je 0x401ef0
cmp eax, 3
je 0x401f40
mov dword [esp + 0x18], edi
inc eax
jmp 0x401ef4
movzx eax, byte [esp + 0x30]
mov byte [esp + esi + 0x63], al
dec esi
dec edi
xor eax, eax
test ebx, ebx
jne 0x401f26
jmp 0x401fc3
mov dword [esp + 0x18], edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ebx
mov ecx, 0x51eb851f
mul ecx
shr edx, 5
imul ecx, edx, 0x64
mov eax, ebx
sub eax, ecx
mov ecx, eax
and ecx, 2
mov edi, eax
or eax, 2
imul eax, ecx
xor ecx, 2
and edi, 0x7d
imul edi, ecx
movzx eax, word [edi + eax + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [esp + esi + 0x62], ax
add esi, 0xfffffffe
cmp ebx, 0x64
mov ebx, edx
jae 0x401f70
mov edx, dword [esp + 0xc]
mov eax, dword [esp]
mov edi, dword [esp + 0x18]
jmp 0x401fc3
mov eax, dword [esp]
mov dword [esp], eax
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x28]
or eax, ecx
je 0x4020bd
lea eax, [esp + esi]
add eax, 0x64
cmp eax, edi
movzx ebx, byte [esp + 0x50]
jne 0x40200a
jmp 0x401e80
mov eax, dword [esp]
mov dword [esp], eax
mov byte [esp + esi + 0x63], 0x30
dec esi
lea eax, [esp + esi]
add eax, 0x64
cmp eax, edi
je 0x401e80
test edx, edx
je 0x401ff0
mov eax, dword [esp]
cmp eax, 3
je 0x402020
inc eax
jmp 0x401ff3
mov byte [esp + esi + 0x63], bl
dec esi
dec edi
mov dword [esp], 0
jmp 0x401ffc
mov eax, 1
mov ecx, dword [esp + 4]
cmp ecx, 0xffffffff
je 0x40203f
mov eax, ecx
mov dword [esp + 4], 0
cmp dword [esp + 0x10], 0x400
mov ecx, dword [esp + 0x28]
sbb ecx, 0
mov edx, edi
jb 0x40205e
mov dword [esp + 4], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x5c], eax
fild qword [esp + 0x58]
xor eax, eax
mov ecx, dword [esp + 8]
test ecx, 0x800
sete al
fld qword [eax*8 + 0x44c550]
cmp ecx, 0x3ffffff
ja 0x402133
fld st(0)
fchs
fxch st(1)
fucom st(2)
fnstsw ax
sahf
jbe 0x4021e0
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
jbe 0x4021e0
fstp st(0)
fstp st(0)
jmp 0x402265
mov ecx, esi
cmp esi, 0x200
setne al
cmp byte [esp + esi + 0x64], 0x30
sete cl
mov byte [esp + 0x34], 0
mov byte [esp + 0x44], 0
mov dl, 0x2d
cmp byte [esp + 8], 0
js 0x4020f5
mov dl, 0x20
test byte [esp + 8], 4
jne 0x4020f5
mov dl, 0x2b
test byte [esp + 8], 2
je 0x4020fe
mov byte [esp + 0x44], 1
mov byte [esp + 0x45], dl
and al, cl
movzx eax, al
add esi, eax
lea eax, [esp + esi]
add eax, 0x64
lea edx, [esi - 0x200]
neg edx
mov dword [esp + 0x1c], edx
cmp esi, 0x200
jne 0x40213a
mov byte [eax - 1], 0x30
dec eax
mov dword [esp + 0x1c], 1
mov ecx, 1
jmp 0x40213c
fstp st(0)
jmp 0x402265
mov ecx, edx
mov esi, dword [esp + 0x54]
mov dword [esp], eax
mov dword [esp + 0x10], 0
cmp dword [esp + 4], 0
jg 0x40215a
mov dword [esp + 4], 0
add ecx, 0x3000000
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 4]
jmp 0x402b4f
mov eax, ecx
add dword [esp + 0x24], 8
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x40]
cmp ecx, 0xfffffffd
jl 0x4021ac
cmp ecx, ebx
jg 0x4021ac
test ecx, ecx
jle 0x4024b8
sub dword [esp + 0x10], ecx
mov edx, dword [esp + 0x2c]
jg 0x4024ce
mov dword [esp + 0x10], 0
jmp 0x4024ce
mov ecx, dword [esp + 0x10]
cmp eax, ecx
jle 0x4021c2
dec ecx
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x2c]
jmp 0x4013da
mov dword [esp + 0x10], 0
sub eax, 1
mov ecx, dword [esp + 0x2c]
jb 0x4013da
mov dword [esp + 0x10], eax
jmp 0x4013da
mov eax, dword [esp + 8]
lea ecx, [eax + 0x1000000]
fdiv st(2), st(0)
cmp eax, 0x2ffffff
ja 0x40225d
fucom st(2)
fnstsw ax
sahf
jbe 0x402205
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
ja 0x40225d
mov eax, dword [esp + 8]
lea ecx, [eax + 0x2000000]
fdiv st(2), st(0)
cmp eax, 0x1ffffff
ja 0x40225d
fucom st(2)
fnstsw ax
sahf
jbe 0x40222a
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
ja 0x40225d
mov eax, dword [esp + 8]
lea ecx, [eax + 0x3000000]
fdiv st(2), st(0)
cmp eax, 0xffffff
ja 0x40225d
fucom st(2)
fnstsw ax
sahf
jbe 0x4036aa
fxch st(2)
fucom st(1)
fstp st(1)
fnstsw ax
sahf
fldz
fxch st(1)
fxch st(2)
jbe 0x4036aa
fstp st(0)
fstp st(0)
mov dword [esp + 8], ecx
mov edi, edx
mov ecx, 6
mov eax, dword [esp + 4]
cmp eax, 0xffffffff
je 0x402277
mov ecx, eax
sub esp, 0x18
fstp qword [esp + 8]
lea eax, [esp + 0x58]
mov dword [esp + 4], eax
lea eax, [esp + 0x7c]
mov dword [esp], eax
mov dword [esp + 0x28], ecx
mov dword [esp + 0x10], ecx
lea ecx, [esp + 0x2c]
lea edx, [esp + 0x34]
call fcn.00403710
add esp, 0x18
test eax, eax
je 0x4024cc
or dword [esp + 8], 0x80
jmp 0x4024cc
add ecx, 3
jmp case.0x401272.74
lea eax, [esp + 0xa6]
mov dword [esp + 0x28], eax
cmp ecx, 4
jb 0x4018dc
mov dword [esp + 0xc], edi
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0x28]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 0x18], ebx
mov ebx, edi
shr ebx, 0x18
and ebx, 0xf
mov eax, dword [esp]
movzx ebx, byte [eax + ebx]
mov byte [edx], bl
mov ebx, edi
shr ebx, 0x14
and ebx, 0xf
movzx ebx, byte [eax + ebx]
mov byte [edx + 1], bl
mov ebx, edi
shr ebx, 0x10
and ebx, 0xf
movzx ebx, byte [eax + ebx]
mov byte [edx + 2], bl
mov ebx, edi
mov edi, dword [esp + 0xc]
shld edi, ecx, 0x10
shl ecx, 0x10
shr ebx, 0xc
and ebx, 0xf
movzx ebx, byte [eax + ebx]
mov byte [edx + 3], bl
mov ebx, dword [esp + 0x18]
add edx, 4
mov dword [esp + 0xc], edi
add ebx, 0xfffffffc
jne 0x4022f0
mov dword [esp + 0x28], edx
lea ecx, [esp + 0xa6]
mov edx, dword [esp + 0x50]
cmp byte [esp + 0x54], 0x41
setne al
shl al, 5
or al, 0x50
mov byte [esp + 0x35], al
test edx, edx
js 0x402378
mov byte [esp + 0x36], 0x2b
jmp 0x40237f
mov byte [esp + 0x36], 0x2d
neg edx
cmp edx, 0x3e7
mov dword [esp + 0x18], ecx
ja 0x40239d
cmp edx, 0x63
jbe 0x40249d
mov dword [esp], 5
jmp 0x4023a4
mov dword [esp], 6
mov dword [esp + 0xc], 0
mov eax, edx
mov ecx, 0xcccccccd
mov edi, edx
mul ecx
shr edx, 2
and edx, 0xfffffffe
lea ebx, [edx + edx*4]
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
mov eax, edi
sub eax, ebx
mov ebx, dword [esp]
mov byte [esp + 0x34], bl
or al, 0x30
mov byte [esp + ebx + 0x34], al
mov eax, edx
shr eax, 0x1f
sar edx, 2
add edx, eax
add edx, edx
lea edx, [edx + edx*4]
sub ecx, edx
add cl, 0x30
mov byte [esp + ebx + 0x33], cl
cmp byte [esp + 0xc], 0
jne 0x402864
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
sar edx, 2
add edx, eax
add edx, edx
lea eax, [edx + edx*4]
sub ecx, eax
add cl, 0x30
lea eax, [esp + 0x34]
mov edx, dword [esp]
mov byte [edx + eax - 2], cl
cmp edi, 0x3e8
jb 0x402864
mov eax, edi
mov ecx, 0x10624dd3
imul ecx
mov ecx, edx
mov eax, edx
shr eax, 0x1f
sar ecx, 6
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]
sub ecx, eax
add cl, 0x30
lea eax, [esp + 0x34]
mov edx, dword [esp]
mov byte [edx + eax - 3], cl
jmp 0x402864
cmp edx, 9
jbe 0x402858
mov dword [esp], 4
mov al, 1
mov dword [esp + 0xc], eax
jmp 0x4023ac
mov edx, dword [esp + 0x10]
cmp eax, edx
mov edi, dword [esp + 0x2c]
jl 0x4024c6
mov eax, edx
sub eax, ecx
mov dword [esp + 0x10], eax
mov edx, edi
mov byte [esp + 0x34], 0
mov byte [esp + 0x44], 0
mov al, 0x2d
cmp byte [esp + 8], 0
js 0x4024f3
mov al, 0x20
test byte [esp + 8], 4
jne 0x4024f3
mov al, 0x2b
test byte [esp + 8], 2
je 0x4024fc
mov byte [esp + 0x44], 1
mov byte [esp + 0x45], al
mov ecx, dword [esp + 0x40]
cmp ecx, 0x7000
mov dword [esp + 0x2c], edx
jne 0x402520
mov dword [esp + 0xc], 0
mov eax, dword [esp + 0x14]
mov dword [esp], eax
jmp 0x4029b5
test ecx, ecx
jle 0x402558
mov edx, dword [esp + 8]
mov eax, edx
xor eax, 0xffffffbf
or edx, 0x40
and edx, eax
mov dword [esp + 0x18], edx
je 0x40262e
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
jmp 0x402630
mov byte [esp + 0xa4], 0x30
lea eax, [esp + 0xa5]
mov dword [esp + 4], eax
mov edx, dword [esp + 0x10]
test edx, edx
je 0x40258e
movzx eax, byte [section..data]
xor al, 0xfd
mov byte [esp + 0xa5], al
lea eax, [esp + 0xa6]
mov dword [esp + 4], eax
neg ecx
mov ebx, edx
cmp edx, ecx
jl 0x402598
mov ebx, ecx
test ebx, ebx
mov ecx, dword [esp + 4]
mov dword [esp], ebx
je 0x4025d0
mov eax, ecx
and eax, 3
je 0x4025d0
mov edi, ecx
not edi
and edi, 3
dec ebx
cmp edi, ebx
jb 0x4025b8
mov edi, ebx
lea eax, [edi + 1]
push eax
push 0x30
push ecx
call fcn.0040cb80
mov ecx, dword [esp + 0x10]
add esp, 0xc
sub ebx, edi
add ecx, edi
inc ecx
cmp ebx, 4
jl 0x40260d
mov eax, ebx
cmp ebx, 7
jl 0x4025e1
mov eax, 7
neg eax
lea edi, [ebx + eax]
add edi, 3
and edi, 0xfffffffc
lea eax, [edi + 4]
push eax
push 0x30
push ecx
mov dword [esp + 0x10], ecx
call fcn.0040cb80
mov ecx, dword [esp + 0x10]
add esp, 0xc
add ecx, edi
add ecx, 4
sub ebx, edi
add ebx, 0xfffffffc
test ebx, ebx
je 0x402893
push ebx
push 0x30
push ecx
mov edi, ecx
call fcn.0040cb80
add esp, 0xc
add edi, ebx
mov dword [esp + 4], edi
jmp 0x402897
xor edi, edi
mov dword [esp], edi
cmp ecx, dword [esp + 0x1c]
jae 0x4026ae
xor eax, eax
lea ecx, [esp + 0xa4]
mov dword [esp + 0xc], ecx
jmp 0x402672
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x14]
movzx ecx, byte [ecx + eax]
lea edi, [edx + 1]
mov dword [esp + 0xc], edi
mov byte [edx], cl
inc eax
mov ecx, dword [esp + 0x40]
cmp eax, ecx
jae 0x40271a
cmp dword [esp + 0x18], 0
je 0x402650
mov ecx, dword [esp]
inc ecx
mov dword [esp], ecx
cmp ecx, 4
jne 0x402650
xor ecx, ecx
cmp dword [esp + 0x18], 0
setne cl
mov dword [esp], ecx
movzx ecx, byte [0x44f001]
mov edx, ecx
add dl, cl
and dl, 0xc0
sub cl, dl
add cl, 0xe0
mov edx, dword [esp + 0xc]
mov byte [edx], cl
inc edx
jmp 0x402654
xor eax, eax
mov edi, 0xffffffff
mov ebx, 1
lea edx, [esp + 0xa4]
jmp 0x4026eb
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 + 0x1c]
jae 0x4027b8
cmp dword [esp + 0x18], 0
je 0x4026d0
mov ecx, dword [esp]
inc ecx
mov dword [esp], ecx
cmp ecx, 4
jne 0x4026d0
xor ecx, ecx
cmp dword [esp + 0x18], 0
setne cl
mov dword [esp], ecx
movzx ecx, byte [0x44f001]
xor cl, 0xe0
mov byte [edx], cl
inc edx
jmp 0x4026d0
mov edi, dword [esp + 0xc]
mov dword [esp + 4], edi
cmp dword [esp + 0x10], 0
je 0x402741
movzx ecx, byte [section..data]
xor cl, 0xfd
mov byte [edx + 1], cl
add edx, 2
mov ecx, dword [esp + 0x40]
mov dword [esp + 4], edx
mov edx, dword [esp + 0x1c]
mov edi, edx
sub edi, ecx
cmp edi, dword [esp + 0x10]
jbe 0x402759
mov edx, dword [esp + 0x10]
add edx, ecx
mov dword [esp + 0x1c], edx
cmp eax, edx
jae 0x40278c
mov edi, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
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 + 0x1c]
cmp eax, edx
jb 0x402770
mov dword [esp + 4], edi
mov ecx, dword [esp + 0x40]
lea eax, [esp + 0xa4]
mov edi, dword [esp + 0xc]
sub edi, eax
add edi, 0x3000000
mov dword [esp + 0xc], edi
mov eax, dword [esp + 0x10]
sub eax, edx
add eax, ecx
mov dword [esp + 0x10], eax
mov edx, dword [esp + 4]
jmp 0x402ab8
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0xc], ecx
sub ecx, eax
jbe 0x402a86
cmp dword [esp + 0x18], 0
je 0x4029c4
mov eax, dword [esp]
mov ebx, ecx
test ebx, ebx
jne 0x402a67
jmp 0x402a86
mov ebx, edx
mov dword [esp + 0x18], edi
mov dword [esp + 0xc], ebx
mov eax, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, edi
cmp edi, 4
jb 0x40282c
mov edx, dword [eax]
mov edi, eax
mov eax, edx
not eax
add edx, 0xfefefeff
and edx, eax
mov ebx, edi
lea eax, [edi + 4]
lea edi, [ecx - 4]
test edx, 0x80808080
mov edx, dword [esp]
je 0x402800
jmp 0x402836
test ecx, ecx
mov ebx, eax
je 0x40298e
mov edi, dword [esp + 0xc]
add edi, dword [esp + 0x18]
xor edx, edx
mov eax, ebx
cmp byte [eax + edx], 0
je 0x402910
inc edx
cmp ecx, edx
jne 0x402842
mov eax, edi
jmp 0x402912
mov byte [esp + 0x34], 3
or dl, 0x30
mov byte [esp + 0x37], dl
add dword [esp + 0x24], 8
mov ecx, dword [esp + 0x28]
mov eax, ecx
sub eax, dword [esp + 0x18]
mov dword [esp + 0x40], eax
lea eax, [esp + 0xa4]
sub ecx, eax
mov dword [esp + 0x1c], ecx
xor ecx, ecx
mov dword [esp + 0xc], 0x3000001
jmp 0x402b4c
mov dword [esp + 4], ecx
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp]
lea ecx, [ebx + eax]
cmp ecx, dword [esp + 0x10]
jle 0x4028b2
mov ebx, dword [esp + 0x10]
sub ebx, dword [esp]
mov dword [esp + 0x1c], ebx
test ebx, ebx
je 0x40290a
mov edi, dword [esp + 0x10]
mov eax, edi
cmp edi, ecx
jl 0x4028c2
mov eax, ecx
mov ecx, ebx
and ecx, 3
je 0x402917
mov dword [esp + 0xc], eax
mov dword [esp + 0x18], ebx
xor edi, edi
mov eax, dword [esp + 4]
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 0x4028e0
add eax, edi
mov dword [esp + 4], eax
mov ebx, dword [esp + 0x18]
mov ecx, ebx
sub ecx, edi
mov eax, dword [esp + 0xc]
jmp 0x402919
mov eax, dword [esp + 4]
jmp 0x402972
add eax, edx
mov edx, dword [esp]
jmp 0x402990
mov ecx, ebx
mov edx, dword [esp]
sub edx, eax
cmp edx, 0xfffffffc
mov eax, dword [esp + 4]
ja 0x402972
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
add eax, 4
add ecx, 0xfffffffc
jne 0x402927
mov ecx, dword [esp]
add ecx, ebx
sub dword [esp + 0x10], ecx
mov dword [esp + 0xc], 0x3000001
mov edx, eax
jmp 0x402ab8
mov eax, edx
jmp 0x402990
mov eax, ebx
add dword [esp + 0x24], 4
sub eax, edx
mov dword [esp + 0x1c], eax
mov byte [esp + 0x44], 0
mov byte [esp + 0x34], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
xor ecx, ecx
jmp 0x402b4f
cmp dword [esp + 0xc], eax
je 0x402a30
mov eax, edx
and eax, 3
je 0x402a30
mov ecx, 2
sub ecx, dword [esp + 4]
and ecx, 3
mov eax, dword [esp + 0xc]
sub eax, ebx
mov dword [esp + 0x30], ecx
mov dword [esp + 0x28], ecx
cmp ecx, eax
mov ecx, dword [esp + 0x30]
jb 0x4029f5
mov ecx, eax
mov dword [esp + 0x30], ecx
lea eax, [ecx + 1]
push eax
push 0x30
push edx
call fcn.0040cb80
add esp, 0xc
add edi, dword [esp + 0xc]
mov eax, dword [esp + 0x28]
cmp edi, eax
jb 0x402a16
mov edi, eax
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x30]
lea edx, [eax + ecx]
add edx, 2
mov eax, dword [esp + 0xc]
sub eax, edi
sub eax, ebx
mov ebx, eax
jmp 0x402a32
mov ebx, ecx
cmp ebx, 4
jb 0x402a55
mov edi, ebx
and edi, 0xfffffffc
push edi
push 0x30
push edx
mov dword [esp + 0x10], edx
call fcn.0040cb80
mov edx, dword [esp + 0x10]
add esp, 0xc
add edx, edi
and ebx, 3
mov eax, dword [esp]
test ebx, ebx
jne 0x402a67
jmp 0x402a86
mov byte [edx], 0x30
dec ebx
inc edx
test ebx, ebx
je 0x402a86
cmp dword [esp + 0x18], 0
je 0x402a5e
inc eax
cmp eax, 4
jne 0x402a5e
movzx eax, byte [0x44f001]
xor al, 0xe0
mov byte [edx], al
xor eax, eax
inc edx
test ebx, ebx
jne 0x402a67
mov ecx, edx
lea eax, [esp + 0xa4]
sub ecx, eax
add ecx, 0x3000000
mov dword [esp + 0xc], ecx
cmp dword [esp + 0x10], 0
je 0x402ab0
movzx eax, byte [section..data]
xor al, 0xfd
mov byte [edx], al
inc edx
jmp 0x402ab8
mov dword [esp + 0x10], 0
mov edi, dword [esp + 8]
test edi, 0x100
je 0x402b3d
mov eax, edi
and eax, 0x400
sete byte [esp + 0x34]
mov byte [esp + 0x35], 0x20
cmp edi, 0x1000000
jb 0x402b3d
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 0x402b11
movzx ecx, byte [ecx + str._kMGT]
mov byte [esp + edx + 0x34], cl
jmp 0x402b35
movzx ecx, byte [ecx + str._KMGT]
mov byte [esp + edx + 0x34], cl
mov ecx, edi
and ecx, 0x1800
cmp ecx, 0x800
jne 0x402b35
movzx eax, al
mov byte [esp + eax + 0x35], 0x69
inc eax
mov edx, dword [esp + 4]
mov byte [esp + 0x34], al
lea eax, [esp + 0xa4]
sub edx, eax
mov dword [esp + 0x1c], edx
xor ecx, ecx
mov dword [esp], eax
mov ebx, dword [esp + 0x1c]
cmp ecx, ebx
jg 0x402b59
mov ecx, ebx
movsx eax, byte [esp + 0x44]
movsx edi, byte [esp + 0x34]
mov edx, dword [esp + 0x10]
mov dword [esp + 4], ecx
add edx, ecx
add edx, eax
add edx, edi
mov edi, dword [esp + 0x3c]
cmp edi, edx
jg 0x402b7b
mov edi, edx
sub edi, edx
mov dword [esp + 0x3c], edi
sub dword [esp + 4], ebx
mov ecx, dword [esp + 8]
test cl, 1
mov edi, dword [esp + 0x20]
jne 0x402bbb
test cl, 0x10
jne 0x402ba1
mov dword [esp + 8], 0
jmp 0x402bbb
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 4]
cmp ecx, edx
jg 0x402baf
mov ecx, edx
mov dword [esp + 4], ecx
mov dword [esp + 0x3c], 0
mov edx, dword [esp]
mov ecx, dword [esp + 0x3c]
add ecx, dword [esp + 4]
je 0x40306c
test byte [esp + 8], 1
jne 0x402ce5
cmp dword [esp + 0x3c], 0
jle 0x402ce5
mov ecx, dword [esp + 0x3c]
jmp 0x402bfe
mov ecx, dword [esp + 0x3c]
sub ecx, ebx
test ecx, ecx
jle 0x402cdc
mov eax, edi
sub eax, esi
add eax, 0x200
mov ebx, ecx
cmp ecx, eax
jl 0x402c0f
mov ebx, eax
cmp dword [ebp + 8], 0
jne 0x402c17
mov ebx, ecx
mov dword [esp + 0x3c], ecx
test ebx, ebx
mov dword [esp + 0x20], edi
je 0x402c60
mov eax, esi
and eax, 3
je 0x402c60
mov eax, esi
not eax
and eax, 3
mov dword [esp + 0x18], ebx
lea edi, [ebx - 1]
cmp eax, edi
jb 0x402c3e
mov eax, edi
mov ebx, eax
inc eax
push eax
push 0x20
push esi
call fcn.0040cb80
add esp, 0xc
sub edi, ebx
add esi, ebx
inc esi
mov ebx, dword [esp + 0x18]
cmp edi, 4
jl 0x402c8d
jmp 0x402c70
mov edi, ebx
cmp edi, 4
jl 0x402c8d
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esi], 0x20202020
add esi, 4
mov eax, edi
not eax
and eax, 4
and edi, 0x7ffffffb
sub edi, eax
cmp edi, 3
jg 0x402c70
test edi, edi
je 0x402c9f
push edi
push 0x20
push esi
call fcn.0040cb80
add esp, 0xc
add esi, edi
mov edi, dword [esp + 0x20]
cmp dword [ebp + 8], 0
je 0x402bf0
mov eax, esi
sub eax, edi
cmp eax, 0x1ff
jl 0x402bf0
add dword [esp + 0x2c], eax
push eax
push dword [ebp + 0xc]
push edi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4036ee
mov esi, eax
mov edi, eax
jmp 0x402bf0
mov dword [esp + 0x3c], ecx
movzx eax, byte [esp + 0x44]
lea ecx, [esp + 0x45]
mov dword [esp + 0x14], ecx
jmp 0x402cf5
movzx eax, byte [esp + 0x44]
test al, al
je 0x402e1d
movsx edx, al
mov ebx, edi
sub ebx, esi
add ebx, 0x200
cmp ebx, edx
jl 0x402d10
mov ebx, edx
cmp dword [ebp + 8], 0
jne 0x402d18
mov ebx, edx
sub al, bl
mov byte [esp + 0x44], al
test ebx, ebx
je 0x402dbb
mov eax, ebx
and eax, 3
je 0x402e10
mov dword [esp + 0x20], edi
xor edx, edx
nop
nop
nop
nop
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 0x402d40
add esi, edx
mov eax, ebx
sub eax, edx
mov edi, dword [esp + 0x20]
cmp ebx, 4
jb 0x402dbb
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 0x402d70
cmp dword [ebp + 8], 0
je 0x402cf0
mov eax, esi
sub eax, edi
lea ecx, [eax + 1]
cmp ecx, 0x200
jl 0x402cf0
mov ecx, eax
mov edx, dword [esp + 0x2c]
and ecx, edx
xor edx, eax
lea edx, [edx + ecx*2]
mov dword [esp + 0x2c], edx
push eax
push dword [ebp + 0xc]
push edi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4036ee
mov esi, eax
mov edi, eax
jmp 0x402cf0
mov eax, ebx
cmp ebx, 4
jae 0x402d70
jmp 0x402dbb
mov dword [esp + 0x20], edi
mov eax, dword [esp + 0xc]
mov ecx, eax
shr ecx, 0x18
mov dword [esp + 0x18], ecx
xor edi, edi
test byte [esp + 8], 0x40
je 0x402e4d
and eax, 0xffffff
add eax, dword [esp + 4]
mov edi, dword [esp + 0x18]
lea ecx, [edi + 1]
xor edx, edx
div ecx
sub edi, edx
cmp dword [esp + 4], 0
jle 0x40369a
mov ebx, dword [esp + 4]
mov edx, dword [esp]
jmp 0x402e80
mov ebx, dword [esp + 4]
sub ebx, dword [esp + 0xc]
test ebx, ebx
jle 0x403063
mov eax, dword [esp + 0x20]
sub eax, esi
add eax, 0x200
mov ecx, ebx
mov dword [esp + 0xc], ebx
mov dword [esp + 4], ebx
cmp ebx, eax
jl 0x402f00
mov dword [esp + 0xc], eax
cmp dword [ebp + 8], 0
je 0x402f06
test byte [esp + 8], 0x40
jne 0x402f15
cmp dword [esp + 0xc], 0
je 0x402f20
mov eax, esi
and eax, 3
je 0x402f20
mov ecx, esi
not ecx
and ecx, 3
mov eax, dword [esp + 0xc]
lea ebx, [eax - 1]
cmp ecx, ebx
jb 0x402ecc
mov ecx, ebx
mov dword [esp + 0x30], ecx
lea eax, [ecx + 1]
push eax
push 0x30
push esi
call fcn.0040cb80
add esp, 0xc
mov eax, dword [esp + 0x30]
add esi, eax
inc esi
sub ebx, eax
mov edx, dword [esp]
cmp ebx, 4
jge 0x402f29
jmp 0x402f63
cmp dword [ebp + 8], 0
jne 0x402ea3
mov eax, dword [esp + 4]
mov dword [esp + 0xc], eax
test byte [esp + 8], 0x40
je 0x402eaa
mov ebx, dword [esp + 0xc]
jmp 0x402f63
mov ebx, dword [esp + 0xc]
cmp ebx, 4
jl 0x402f63
mov eax, ebx
cmp ebx, 7
jl 0x402f35
mov eax, 7
neg eax
add eax, ebx
add eax, 3
and eax, 0xfffffffc
mov dword [esp + 0x30], eax
add eax, 4
push eax
push 0x30
push esi
call fcn.0040cb80
add esp, 0xc
mov eax, dword [esp + 0x30]
add esi, eax
add esi, 4
sub ebx, eax
add ebx, 0xfffffffc
mov edx, dword [esp]
test ebx, ebx
je 0x402fb0
test bl, 1
jne 0x402f80
mov eax, ebx
cmp ebx, 1
jne 0x40300e
jmp 0x402fb0
mov al, 0x30
test byte [esp + 8], 0x40
je 0x402f9d
cmp edi, dword [esp + 0x18]
jne 0x402f9c
movzx eax, byte [0x44f001]
xor al, 0xe0
xor edi, edi
jmp 0x402f9d
inc edi
mov byte [esi], al
inc esi
lea eax, [ebx - 1]
cmp ebx, 1
jne 0x40300e
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [ebp + 8], 0
je 0x402e70
mov eax, esi
mov ecx, dword [esp + 0x20]
sub eax, ecx
cmp eax, 0x1ff
jl 0x402e70
add dword [esp + 0x2c], eax
push eax
push dword [ebp + 0xc]
push ecx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4036ee
mov esi, eax
mov dword [esp + 0x20], eax
mov edx, dword [esp]
jmp 0x402e70
mov edx, dword [esp]
mov byte [esi + 1], cl
add esi, 2
add eax, 0xfffffffe
je 0x402fb0
mov cl, 0x30
test byte [esp + 8], 0x40
je 0x403031
cmp edi, dword [esp + 0x18]
jne 0x403030
movzx edx, byte [0x44f001]
xor dl, 0xe0
xor edi, edi
jmp 0x403033
inc edi
mov dl, 0x30
mov byte [esi], dl
test byte [esp + 8], 0x40
je 0x403000
cmp edi, dword [esp + 0x18]
mov edx, dword [esp]
jne 0x403060
movzx ecx, byte [0x44f001]
xor cl, 0xe0
xor edi, edi
jmp 0x403003
inc edi
jmp 0x403003
movzx eax, byte [esp + 0x44]
mov edi, dword [esp + 0x20]
lea ecx, [esp + 0x45]
mov dword [esp + 0x14], ecx
jmp 0x40308c
mov esi, eax
mov edi, eax
mov edx, dword [esp]
movzx eax, byte [esp + 0x44]
test al, al
je 0x40318d
movsx edx, al
mov ebx, edi
sub ebx, esi
add ebx, 0x200
cmp ebx, edx
jl 0x4030a7
mov ebx, edx
cmp dword [ebp + 8], 0
jne 0x4030af
mov ebx, edx
sub al, bl
mov byte [esp + 0x44], al
test ebx, ebx
je 0x40314b
mov eax, ebx
and eax, 3
je 0x403180
mov dword [esp + 0x20], edi
xor edx, edx
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 0x4030d0
add esi, edx
mov eax, ebx
sub eax, edx
mov edi, dword [esp + 0x20]
cmp ebx, 4
jb 0x40314b
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 0x403100
cmp dword [ebp + 8], 0
je 0x403084
mov eax, esi
sub eax, edi
cmp eax, 0x1ff
jl 0x403084
add dword [esp + 0x2c], eax
push eax
push dword [ebp + 0xc]
push edi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x403080
jmp 0x4036ee
mov eax, ebx
cmp ebx, 4
jae 0x403100
jmp 0x40314b
mov dword [esp + 0x20], edi
mov ecx, dword [esp + 0x1c]
test ecx, ecx
jne 0x4033e5
mov ecx, dword [esp + 0x10]
test ecx, ecx
mov edi, dword [esp + 0x20]
jne 0x4032ed
lea eax, [esp + 0x35]
mov dword [esp + 0x14], eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + 0x34]
test cl, cl
je 0x40357d
movsx edx, cl
mov eax, edi
sub eax, esi
add eax, 0x200
cmp eax, edx
jl 0x4031df
mov eax, edx
cmp dword [ebp + 8], 0
jne 0x4031e7
mov eax, edx
sub cl, al
mov byte [esp + 0x34], cl
test eax, eax
je 0x40328b
mov ecx, eax
and ecx, 3
je 0x4032d0
mov dword [esp + 0x20], 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 0x403210
add esi, edx
mov ecx, eax
sub ecx, edx
mov edi, dword [esp + 0x20]
cmp eax, 4
jb 0x40328b
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 0x403240
cmp dword [ebp + 8], 0
je 0x4031c0
mov eax, esi
sub eax, edi
lea ecx, [eax + 1]
cmp ecx, 0x200
jl 0x4031c0
add dword [esp + 0x2c], eax
push eax
push dword [ebp + 0xc]
push edi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4036ee
mov esi, eax
mov edi, eax
jmp 0x4031c0
mov ecx, eax
cmp eax, 4
jae 0x403240
jmp 0x40328b
mov ecx, dword [esp + 0x10]
sub ecx, dword [esp]
je 0x4031ad
mov eax, edi
sub eax, esi
add eax, 0x200
mov edx, ecx
cmp ecx, eax
jl 0x4032fe
mov edx, eax
cmp dword [ebp + 8], 0
jne 0x403306
mov edx, ecx
test edx, edx
mov dword [esp + 0x10], ecx
mov dword [esp], edx
je 0x403350
mov eax, esi
and eax, 3
je 0x403350
mov dword [esp + 0x20], edi
mov edi, esi
not edi
and edi, 3
lea ebx, [edx - 1]
cmp edi, ebx
jb 0x40332c
mov edi, ebx
lea eax, [edi + 1]
push eax
push 0x30
push esi
call fcn.0040cb80
add esp, 0xc
add esi, edi
inc esi
sub ebx, edi
mov edi, dword [esp + 0x20]
cmp ebx, 4
jl 0x40337c
jmp 0x403360
mov ebx, edx
cmp ebx, 4
jl 0x40337c
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esi], 0x30303030
mov eax, ebx
and eax, 0xfffffffb
add eax, eax
xor ebx, 4
sub eax, ebx
add esi, 4
mov ebx, eax
cmp eax, 3
jg 0x403360
test ebx, ebx
je 0x40338e
push ebx
push 0x30
push esi
call fcn.0040cb80
add esp, 0xc
add esi, ebx
cmp dword [ebp + 8], 0
je 0x4032e0
mov eax, esi
sub eax, edi
cmp eax, 0x1ff
jl 0x4032e0
add dword [esp + 0x2c], eax
push eax
push dword [ebp + 0xc]
push edi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4036ee
mov esi, eax
mov edi, eax
jmp 0x4032e0
mov esi, eax
mov dword [esp + 0x20], eax
mov edx, edi
mov edi, ebx
mov ecx, dword [esp]
sub ecx, edi
je 0x40319d
mov eax, dword [esp + 0x20]
sub eax, esi
add eax, 0x200
mov edi, ecx
cmp ecx, eax
jl 0x4033f8
mov edi, eax
cmp dword [ebp + 8], 0
jne 0x403400
mov edi, ecx
cmp edi, 4
mov dword [esp], ecx
jl 0x403460
lea ebx, [edi - 4]
mov eax, ebx
shr eax, 2
inc eax
and eax, 7
je 0x403464
mov dword [esp + 0x18], ebx
shl eax, 2
mov ebx, edx
xor edx, edx
nop
nop
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 0x403430
add esi, edx
mov ecx, edi
sub ecx, edx
add ebx, edx
mov eax, ecx
mov edx, ebx
mov ebx, dword [esp + 0x18]
cmp ebx, 0x1c
jae 0x403470
jmp 0x4034b1
mov eax, edi
jmp 0x4034b1
mov ecx, edi
cmp ebx, 0x1c
jb 0x4034b1
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
lea eax, [ecx - 0x20]
add edx, 0x20
add esi, 0x20
add ecx, 0xffffffdc
cmp ecx, 0xfffffff8
mov ecx, eax
jb 0x403470
test eax, eax
je 0x403531
mov ecx, eax
and ecx, 7
je 0x403570
mov dword [esp + 0x18], edi
mov edi, edx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [edi + edx]
mov byte [esi + edx], bl
inc edx
cmp ecx, edx
jne 0x4034d0
add esi, edx
mov ecx, eax
sub ecx, edx
add edi, edx
mov edx, edi
mov edi, dword [esp + 0x18]
cmp eax, 8
jb 0x403531
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 0x4034f0
cmp dword [ebp + 8], 0
je 0x4033da
mov eax, esi
mov ecx, dword [esp + 0x20]
sub eax, ecx
cmp eax, 0x1ff
jl 0x4033da
mov ebx, edi
mov edi, edx
add dword [esp + 0x2c], eax
push eax
push dword [ebp + 0xc]
push ecx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x4033d0
jmp 0x4036ee
mov ecx, eax
cmp eax, 8
jae 0x4034f0
jmp 0x403531
test byte [esp + 8], 1
je 0x403591
cmp dword [esp + 0x3c], 0
jle 0x403591
mov ecx, dword [esp + 0x3c]
jne 0x4035a8
mov ebx, dword [esp + 0x4c]
inc ebx
jmp 0x40103d
mov ecx, dword [esp + 0x3c]
sub ecx, edx
je 0x403591
mov eax, edi
sub eax, esi
add eax, 0x200
mov edx, ecx
mov dword [esp + 0x3c], ecx
cmp ecx, eax
jl 0x4035bd
mov edx, eax
cmp dword [ebp + 8], 0
jne 0x4035c7
mov edx, dword [esp + 0x3c]
test edx, edx
mov dword [esp + 8], edx
mov dword [esp + 0x20], edi
je 0x403610
mov eax, esi
and eax, 3
je 0x403610
mov ebx, esi
not ebx
and ebx, 3
lea edi, [edx - 1]
cmp ebx, edi
jb 0x4035ea
mov ebx, edi
lea eax, [ebx + 1]
push eax
push 0x20
push esi
call fcn.0040cb80
add esp, 0xc
add esi, ebx
inc esi
sub edi, ebx
cmp edi, 4
jge 0x403617
jmp 0x403647
mov edi, edx
cmp edi, 4
jl 0x403647
mov eax, edi
cmp edi, 7
jl 0x403623
mov eax, 7
neg eax
lea ebx, [edi + eax]
add ebx, 3
and ebx, 0xfffffffc
lea eax, [ebx + 4]
push eax
push 0x20
push esi
call fcn.0040cb80
add esp, 0xc
add esi, ebx
add esi, 4
sub edi, ebx
add edi, 0xfffffffc
test edi, edi
je 0x403659
push edi
push 0x20
push esi
call fcn.0040cb80
add esp, 0xc
add esi, edi
mov edi, dword [esp + 0x20]
mov edx, dword [esp + 8]
cmp dword [ebp + 8], 0
je 0x4035a0
mov eax, esi
sub eax, edi
cmp eax, 0x1ff
jl 0x4035a0
add dword [esp + 0x2c], eax
push eax
push dword [ebp + 0xc]
push edi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4036ee
mov esi, eax
mov edi, eax
mov edx, dword [esp + 8]
jmp 0x4035a0
lea eax, [esp + 0x45]
mov dword [esp + 0x14], eax
mov edx, dword [esp]
jmp 0x403191
fstp st(1)
or dword [esp + 8], 0x4000000
fdivp st(1)
jmp 0x402265
mov edi, ecx
jmp 0x4027eb
mov eax, dword [esp + 0x18]
jmp 0x402990
cmp dword [ebp + 8], 0
je 0x4036f4
mov eax, esi
sub eax, edi
test eax, eax
jle 0x4036f7
add dword [esp + 0x2c], eax
push eax
push dword [ebp + 0xc]
push edi
call dword [ebp + 8]
add esp, 0xc
mov esi, eax
mov edi, eax
jmp 0x4036f7
xor esi, esi
xor edi, edi
jmp 0x4036f7
mov byte [esi], 0
mov eax, edi
xor eax, esi
mov ecx, dword [esp + 0x2c]
sub ecx, eax
not edi
and edi, esi
lea eax, [ecx + edi*2]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret