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 + 0x28], eax
mov eax, dword [ebp + 0x14]
mov esi, dword [ebp + 0x10]
mov dword [esp + 0x4c], 0
mov dword [esp + 0x2c], esi
jmp 0x401049
mov esi, eax
mov eax, edi
movzx eax, byte [edi]
mov dword [esp + 0x2c], esi
mov ecx, dword [esp + 0x2c]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x2c], ecx
mov eax, edi
inc eax
test al, 3
mov dword [esp + 0x20], esi
mov edi, eax
je 0x401060
movzx eax, byte [eax]
jmp 0x401081
mov eax, dword [eax]
lea ebx, [eax + eax]
not ebx
add ebx, eax
and ebx, 0x80808080
mov ecx, eax
xor ecx, 0x25252525
add ecx, 0xfefefeff
test ebx, ecx
je 0x4010c5
cmp al, 0x25
je 0x40114e
mov edx, dword [ebp + 8]
mov esi, dword [esp + 0x20]
test al, al
je 0x4036da
test edx, edx
je 0x40103b
mov ecx, dword [esp + 0x2c]
sub ecx, esi
cmp ecx, 0x1ff
jl 0x40103b
add dword [esp + 0x4c], ecx
push ecx
push dword [ebp + 0xc]
push esi
call edx
add esp, 0xc
test eax, eax
jne 0x401030
jmp 0x4036fe
not esi
mov dword [esp + 4], esi
mov esi, dword [esp + 0x2c]
mov edx, esi
not edx
jmp 0x40111c
mov ecx, dword [esp + 0x2c]
mov dword [ecx], eax
add ecx, 4
mov dword [esp + 0x2c], ecx
mov eax, dword [edi + 4]
add edi, 4
lea ebx, [eax + eax]
not ebx
add ebx, eax
and ebx, 0x80808080
mov ecx, eax
xor ecx, 0x25252525
add ecx, 0xfefefeff
add esi, 4
add edx, 0xfffffffc
test ebx, ecx
jne 0x401081
lea ecx, [eax - 0x1010101]
test ebx, ecx
jne 0x401089
cmp dword [ebp + 8], 0
je 0x4010e0
mov ecx, edx
and ecx, dword [esp + 0x20]
mov ebx, esi
and ebx, dword [esp + 4]
sub ecx, ebx
add ecx, 0x200
cmp ecx, 4
jge 0x4010e0
jmp 0x401081
add edi, 2
mov ecx, edi
xor ebx, ebx
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x2c]
jmp 0x401170
mov eax, ebx
xor eax, 1
add eax, ebx
mov edx, ebx
and edx, 0xfffffffe
sub eax, edx
inc ecx
mov ebx, eax
movzx eax, byte [ecx - 1]
lea edx, [eax - 0x20]
cmp edx, 0x3f
ja case.0x40117c.33
jmp dword [edx*4 + 0x44b564]
or ebx, 4
inc ecx
jmp 0x401170
or ebx, 8
inc ecx
jmp 0x401170
or ebx, 0x400
inc ecx
jmp 0x401170
or ebx, 0x40
inc ecx
jmp 0x401170
test ebx, 0x100
jne 0x4011b5
or ebx, 0x100
inc ecx
jmp 0x401170
or ebx, 2
inc ecx
jmp 0x401170
test ebx, 0x800
jne 0x4011c6
or ebx, 0x800
inc ecx
jmp 0x401170
or ebx, 0x1000
inc ecx
jmp 0x401170
or ebx, 0x10
movzx eax, byte [ecx]
cmp al, 0x2a
jne 0x4011f6
mov eax, dword [esp + 0x28]
mov edx, dword [eax]
mov dword [esp + 0x34], edx
add eax, 4
mov dword [esp + 0x28], eax
movzx eax, byte [ecx + 1]
inc ecx
jmp 0x40123d
dec ecx
cmp al, 0x2a
je 0x4011d9
mov edx, eax
add dl, 0xd0
mov dword [esp + 0x34], 0
cmp dl, 9
ja 0x40123d
mov dword [esp + 0x1c], ebx
mov ebx, esi
xor esi, esi
movzx eax, al
add esi, esi
lea edx, [esi + esi*4]
mov esi, edx
and esi, eax
xor edx, eax
lea esi, [edx + esi*2]
add esi, 0xffffffd0
movzx eax, byte [ecx + 1]
inc ecx
mov edx, eax
add dl, 0xd0
cmp dl, 0xa
jb 0x401210
mov dword [esp + 0x34], esi
mov esi, ebx
mov ebx, dword [esp + 0x1c]
mov dword [esp + 8], 0xffffffff
cmp al, 0x2e
jne 0x4012a3
movzx eax, byte [ecx + 1]
cmp al, 0x2a
jne 0x40126b
mov eax, dword [esp + 0x28]
mov edx, dword [eax]
mov dword [esp + 8], edx
add eax, 4
mov dword [esp + 0x28], eax
movzx eax, byte [ecx + 2]
add ecx, 2
jmp 0x4012a3
inc ecx
mov edx, eax
add dl, 0xd0
mov dword [esp + 8], 0
cmp dl, 9
ja 0x4012a3
xor esi, esi
lea edx, [esi + esi*4]
movzx eax, al
lea esi, [eax + edx*2]
add esi, 0xffffffd0
movzx eax, byte [ecx + 1]
inc ecx
mov edx, eax
add dl, 0xd0
cmp dl, 0xa
jb 0x401280
mov dword [esp + 8], esi
mov esi, dword [esp + 0x20]
movzx eax, al
add eax, 0xffffffb7
cmp eax, 0x31
ja case.0x4012ae.74
jmp dword [eax*4 + 0x44b664]
inc ecx
movzx edx, byte [ecx]
mov dword [esp + 0x50], ecx
movzx eax, dl
add eax, 0xffffffbf
cmp eax, 0x37
ja case.0x4012cc.67
jmp dword [eax*4 + 0x44b72c]
test bl, 0x20
jne 0x40176c
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
add eax, 4
mov dword [esp + 0x28], eax
mov dword [esp + 0x30], 0
cmp dl, 0x75
je 0x402075
test ecx, ecx
jns 0x402075
neg ecx
or ebx, 0x80
jmp 0x402075
movzx edx, byte [ecx + 1]
cmp dl, 0x6c
jne 0x4017b1
or ebx, 0x20
add ecx, 2
jmp case.0x4012ae.74
lea eax, [ecx + 1]
movzx edx, byte [ecx + 1]
cmp edx, 0x33
je 0x401bae
cmp edx, 0x36
jne 0x401bbf
cmp byte [ecx + 2], 0x34
jne 0x401bb8
mov eax, ebx
xor eax, 0x20
add eax, ebx
mov edx, ebx
and edx, 0xffffffdf
sub eax, edx
add ecx, 3
mov ebx, eax
jmp case.0x4012ae.74
cmp byte [ecx + 1], 0x68
je 0x4017b7
inc ecx
or ebx, 0x200
jmp case.0x4012ae.74
mov eax, str.0123456789ABCDEFXP
cmp dl, 0x45
je 0x401384
mov eax, str.0123456789abcdefxp
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x28]
fld qword [eax]
mov eax, 6
mov ecx, dword [esp + 8]
cmp ecx, 0xffffffff
je 0x40139e
mov eax, ecx
mov dword [esp + 4], 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 + 0x24]
lea edx, [esp + 0x3c]
call fcn.00403720
add esp, 0x18
test eax, eax
je 0x4013db
or ebx, 0x80
add dword [esp + 0x28], 8
mov byte [esp + 0x38], 0
mov byte [esp + 0x44], 0
mov al, 0x2d
test bl, bl
js 0x401407
mov al, 0x20
test bl, 4
jne 0x401407
mov ecx, ebx
or ecx, 2
mov edx, ebx
xor edx, 0xfffffffd
mov al, 0x2b
test ecx, edx
je 0x401410
mov byte [esp + 0x44], 1
mov byte [esp + 0x45], al
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x14], 0
mov eax, dword [esp + 0xc]
cmp ecx, 0x7000
mov dword [esp + 0x1c], ebx
mov dword [esp], eax
je 0x402a7d
mov dword [esp + 0x30], ecx
movzx ecx, byte [eax]
mov byte [esp + 0xa4], cl
lea ecx, [esp + 0xa5]
mov eax, dword [esp + 4]
test eax, eax
je 0x40146c
movzx ecx, byte [section..data]
xor cl, 0x26
mov byte [esp + 0xa5], cl
lea ecx, [esp + 0xa6]
mov eax, dword [esp + 4]
mov dword [esp + 4], eax
mov edx, dword [esp + 0x24]
lea eax, [edx - 1]
mov dword [esp + 8], eax
cmp eax, dword [esp + 4]
mov eax, dword [esp + 4]
jbe 0x40148c
lea edx, [eax + 1]
mov dword [esp + 0x24], edx
mov dword [esp + 0x14], edx
cmp edx, 2
jb 0x40155b
mov ebx, eax
mov edx, eax
mov eax, dword [esp + 8]
cmp edx, eax
jb 0x4014a7
mov ebx, eax
lea esi, [ebx - 1]
mov edx, 1
cmp esi, 7
jb 0x401525
mov dword [esp + 8], ebx
mov esi, ebx
and esi, 0xfffffff8
xor edx, edx
mov ebx, dword [esp]
nop
nop
nop
nop
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 esi, edx
jne 0x4014d0
add ecx, edx
inc edx
mov ebx, dword [esp + 8]
and ebx, 7
je 0x40155b
mov eax, ebx
mov dword [esp + 0x10], ecx
add dword [esp], edx
xor edx, edx
mov dword [esp + 8], ebx
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
movzx eax, byte [eax + edx]
mov ecx, dword [esp + 0x10]
mov byte [ecx + edx], al
inc edx
cmp dword [esp + 8], edx
jne 0x401540
mov ecx, dword [esp + 0x10]
add ecx, edx
mov eax, dword [esp + 0x18]
movzx eax, byte [eax + 0xe]
mov byte [esp + 0x39], al
mov eax, dword [esp + 0x30]
test eax, eax
mov dword [esp + 0x10], ecx
jle 0x401d2b
dec eax
mov byte [esp + 0x3a], 0x2b
mov esi, eax
jmp 0x401d37
mov eax, str.0123456789ABCDEFXP
cmp dl, 0x41
je 0x401593
mov eax, str.0123456789abcdefxp
mov dword [esp], eax
mov dword [esp + 0x54], edx
mov ecx, 6
mov eax, dword [esp + 8]
cmp eax, 0xffffffff
je 0x4015aa
mov ecx, eax
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0x28]
mov edx, dword [eax + 4]
test edx, edx
jns 0x4015bf
or ebx, 0x80
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
mov al, 0x2d
test bl, bl
js 0x4015f6
mov al, 0x20
test bl, 4
jne 0x4015f6
mov dword [esp + 0x30], ecx
mov ecx, ebx
or ecx, 2
mov dword [esp + 0x10], edx
mov edx, ebx
xor edx, 0xfffffffd
mov al, 0x2b
test ecx, edx
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x10]
je 0x4027fb
mov byte [esp + 0x45], al
mov al, 1
mov dword [esp + 4], eax
mov esi, edx
and esi, 0xfffff
shr edx, 0x14
and edx, 0x7ff
mov dword [esp + 0x1c], ebx
je 0x401be7
add edx, 0xfffffc01
mov dword [esp + 0x10], edx
mov eax, 0xffffffff
add ecx, eax
mov eax, 0xfffff
adc esi, eax
add ecx, 1
mov dword [esp + 0x30], ecx
adc esi, 0
jmp 0x401bfe
mov dword [esp + 0x18], str.0123456789ABCDEFXP
cmp dl, 0x42
je 0x401657
mov dword [esp + 0x18], str.0123456789abcdefxp
mov byte [esp + 0x44], 0
test bl, 8
je 0x401677
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, 1
test bl, 0x20
je 0x40182d
mov edx, dword [esp + 0x28]
mov eax, dword [edx]
mov esi, dword [edx + 4]
add edx, 8
mov dword [esp + 0x28], edx
jmp 0x40183c
mov eax, str.0123456789ABCDEFXP
cmp dl, 0x47
je 0x4016b1
mov eax, str.0123456789abcdefxp
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x28]
fld qword [eax]
mov ecx, dword [esp + 8]
cmp ecx, 1
mov eax, ecx
adc eax, 0
mov esi, 6
cmp ecx, 0xffffffff
je 0x4016d3
mov esi, eax
lea eax, [esi - 1]
or eax, 0x80000000
sub esp, 0x18
fstp qword [esp + 8]
lea ecx, [esp + 0x58]
mov dword [esp + 4], ecx
lea ecx, [esp + 0x7c]
mov dword [esp], ecx
mov dword [esp + 0x10], eax
lea ecx, [esp + 0x24]
lea edx, [esp + 0x3c]
call fcn.00403720
add esp, 0x18
test eax, eax
je 0x40171c
mov eax, ebx
xor eax, 0x80
add eax, ebx
and ebx, 0xffffff7f
sub eax, ebx
mov ebx, eax
mov ecx, dword [esp + 0x24]
cmp ecx, esi
jb 0x401726
mov ecx, esi
mov eax, ecx
cmp ecx, 2
mov dword [esp], esi
jb 0x4017c5
mov ecx, dword [esp + 0xc]
mov dword [esp + 4], ecx
mov ecx, esi
nop
nop
mov edx, dword [esp + 4]
cmp byte [edx + eax - 1], 0x30
jne 0x401e07
mov esi, eax
lea edx, [ecx - 1]
dec esi
mov eax, esi
cmp esi, 2
jb 0x401e09
cmp ecx, 1
mov ecx, edx
jne 0x401740
jmp 0x401e09
mov ecx, dword [esp + 0x28]
lea eax, [ecx + 8]
mov dword [esp + 4], eax
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
cmp dl, 0x75
je 0x402067
test ecx, ecx
mov edx, ecx
jns 0x402061
neg eax
mov ecx, 0
sbb ecx, edx
or ebx, 0x80
mov dword [esp + 0x30], ecx
mov ecx, eax
mov eax, dword [esp + 4]
mov dword [esp + 0x28], eax
jmp 0x402075
inc ecx
jmp 0x4012b9
add ecx, 2
or ebx, 0x200
jmp case.0x4012ae.74
mov edx, esi
jmp 0x401e09
and ebx, 0xffffffef
mov dword [esp + 8], 8
mov dword [esp + 0x18], str.0123456789ABCDEFXP
mov ecx, edx
cmp dl, 0x58
je 0x4017ee
mov dword [esp + 0x18], str.0123456789abcdefxp
mov dword [esp + 0x24], 0x440
mov byte [esp + 0x44], 0
mov eax, ebx
or eax, 8
mov edx, ebx
xor edx, 0xfffffff7
test eax, edx
je 0x40181f
cmp cl, 0x58
setne al
mov word [esp + 0x44], 0x3002
shl al, 5
or al, 0x58
mov byte [esp + 0x46], al
mov ecx, 4
test bl, 0x20
jne 0x40168d
mov edx, dword [esp + 0x28]
mov eax, dword [edx]
add edx, 4
mov dword [esp + 0x28], edx
xor esi, esi
mov dword [esp + 0x40], 0
mov byte [esp + 0x38], 0
mov edx, eax
or edx, esi
mov dword [esp + 0x1c], ebx
jne 0x401863
mov byte [esp + 0x44], 0
cmp dword [esp + 8], 0
je 0x401bc8
mov edx, 0xffffffff
shl edx, cl
not edx
and edx, eax
mov dword [esp + 4], esi
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x14], ecx
mov cl, ch
mov esi, dword [esp + 4]
shrd eax, esi, cl
mov dword [esp], eax
mov eax, dword [esp + 0x18]
movzx ecx, byte [eax + edx]
mov byte [esp + 0x263], cl
mov eax, dword [esp + 0x14]
mov cl, ah
shr esi, cl
test ah, 0x20
jne 0x4018a7
mov eax, dword [esp]
jmp 0x4018ab
mov eax, esi
xor esi, esi
mov ecx, eax
mov dword [esp + 4], esi
or ecx, esi
jne 0x4018ec
mov ecx, 1
cmp dword [esp + 8], 2
jge 0x4018ec
lea eax, [esp + 0x263]
mov dword [esp], eax
mov eax, dword [esp + 0x14]
shl eax, 0x14
and eax, 0xf000000
add eax, ecx
mov dword [esp + 0x14], eax
mov dword [esp + 0x24], ecx
xor edx, edx
mov eax, dword [esp + 8]
jmp 0x402a81
lea ecx, [esp + 0x263]
mov dword [esp], ecx
lea edx, [esp + 0x264]
nop
nop
nop
mov esi, eax
test bl, 0x40
je 0x40192e
mov ebx, dword [esp + 0x14]
mov ecx, ebx
and ecx, 1
xor ebx, 1
lea ebx, [ebx + ecx*2]
mov dword [esp + 0x24], ebx
mov ecx, ebx
shr ecx, 4
xor ecx, ebx
test cl, 0xf
je 0x4019b5
mov dword [esp + 0x14], ebx
mov eax, dword [esp]
mov dword [esp + 0x10], eax
mov ebx, 0xffffffff
mov eax, dword [esp + 0x14]
mov cl, ah
shl ebx, cl
not ebx
and ebx, esi
mov eax, dword [esp + 0x24]
mov cl, ah
mov edx, dword [esp + 4]
shrd esi, edx, cl
mov ecx, dword [esp + 0x18]
movzx ecx, byte [ecx + ebx]
mov ebx, edx
mov edx, dword [esp + 0x10]
mov byte [edx - 1], cl
mov cl, ah
shr ebx, cl
mov dword [esp + 0x14], eax
test ah, 0x20
jne 0x401980
mov eax, esi
jmp 0x401984
mov eax, ebx
xor ebx, ebx
lea ecx, [edx - 1]
mov dword [esp], ecx
mov ecx, eax
mov dword [esp + 4], ebx
or ecx, ebx
mov ebx, dword [esp + 0x1c]
jne 0x401900
lea ecx, [esp + 0x264]
sub ecx, dword [esp]
cmp ecx, dword [esp + 8]
jl 0x401900
jmp 0x4018cb
and ebx, 0xfffffff0
mov dword [esp + 0x24], ebx
movzx ecx, byte [0x44e001]
xor cl, 0x51
mov byte [edx - 2], cl
add edx, 0xfffffffe
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x24]
mov dword [esp + 0x14], eax
jmp 0x401935
mov byte [esp + 0x44], 0
test bl, 8
je 0x4019ee
mov word [esp + 0x44], 0x3001
mov dword [esp + 0x24], 0x330
mov dword [esp + 0x18], str.0123456789ABCDEFXP
mov ecx, 3
test bl, 0x20
je 0x40182d
jmp 0x40168d
mov eax, dword [esp + 0x28]
mov eax, dword [eax]
mov edx, str.null
test eax, eax
je 0x401a22
mov edx, eax
mov ecx, dword [esp + 8]
mov eax, ecx
test ecx, ecx
jns 0x401a31
mov eax, 0xffffffff
test dl, 3
mov dword [esp], edx
mov dword [esp + 0x1c], ebx
je 0x402745
mov ecx, edx
add edx, eax
cmp dword [esp + 8], 0
je 0x402a57
cmp byte [ecx], 0
je 0x402a55
lea esi, [eax - 1]
inc ecx
test cl, 3
je 0x402a1b
test esi, esi
je 0x402a57
cmp byte [ecx], 0
je 0x402a55
lea esi, [eax - 2]
mov ecx, dword [esp]
add ecx, 2
test cl, 3
je 0x402a1b
test esi, esi
je 0x402a57
cmp byte [ecx], 0
je 0x402a55
lea esi, [eax - 3]
mov ecx, dword [esp]
add ecx, 3
test cl, 3
je 0x402a1b
test esi, esi
je 0x402a57
cmp byte [ecx], 0
je 0x402a55
add eax, 0xfffffffc
mov ecx, dword [esp]
add ecx, 4
test cl, 3
je 0x402a1d
test eax, eax
je 0x401ad5
mov edx, ecx
mov edi, dword [esp + 0x2c]
jmp 0x402a57
mov byte [esp + 0x263], dl
mov dword [esp + 0x24], 1
mov byte [esp + 0x44], 0
mov byte [esp + 0x38], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x14], 0
lea eax, [esp + 0x263]
mov dword [esp], eax
mov dword [esp + 0x1c], 0
xor edx, edx
xor eax, eax
mov dword [esp + 0x34], 0
jmp 0x402a81
mov dword [esp + 0x1c], ebx
mov ecx, dword [esp + 0x28]
movzx eax, byte [ecx]
add ecx, 4
mov dword [esp + 0x28], ecx
mov byte [esp + 0x263], al
mov dword [esp + 0x24], 1
mov byte [esp + 0x44], 0
mov byte [esp + 0x38], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x14], 0
lea eax, [esp + 0x263]
mov dword [esp], eax
jmp 0x402a7d
mov eax, dword [esp + 0x28]
fld qword [eax]
add eax, 8
mov dword [esp + 0x28], eax
test ebx, 0x100
jne 0x402286
jmp 0x4023f0
mov edx, dword [esp + 0x28]
mov eax, dword [edx]
mov ecx, dword [esp + 0x4c]
sub ecx, esi
add ecx, edi
mov dword [eax], ecx
add edx, 4
mov dword [esp + 0x28], edx
jmp 0x40364a
cmp byte [ecx + 2], 0x32
je 0x401e5f
mov ecx, eax
jmp case.0x4012ae.74
mov dword [esp + 0x50], eax
jmp 0x4012bd
mov dword [esp + 0x24], 0
mov dword [esp + 0x14], 0
lea eax, [esp + 0x264]
mov dword [esp], eax
jmp 0x402a7d
xor eax, eax
mov dword [esp + 0x30], ecx
or ecx, esi
je 0x401bf6
mov eax, 0xfffffc02
mov dword [esp + 0x10], eax
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x18]
lea ecx, [eax*4]
xor ebx, ebx
mov eax, 0x8000000
shrd ebx, eax, cl
mov edx, 0x8000000
shr edx, cl
test cl, 0x20
je 0x401c23
mov ebx, edx
xor edx, edx
cmp dword [esp + 0x18], 0xf
mov eax, dword [esp + 0x30]
jl 0x401c32
xor ebx, ebx
xor edx, edx
shld esi, eax, 8
shl eax, 8
add eax, ebx
mov dword [esp + 0x30], eax
adc esi, 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, esi
shr ecx, 0x1c
mov eax, dword [esp]
movzx ecx, byte [eax + ecx]
mov byte [esp + 0xa4], cl
mov edx, dword [esp + 0x18]
test edx, edx
je 0x401d0f
movzx ecx, byte [section..data]
xor cl, 0x26
mov byte [esp + 0xa5], cl
lea eax, [esp + 0xa6]
mov dword [esp + 0xc], eax
mov ecx, edx
cmp edx, 0xd
jb 0x401ca1
mov ecx, 0xd
mov eax, edx
sub eax, ecx
jg 0x401ca9
xor eax, eax
mov dword [esp + 4], eax
mov eax, ecx
and eax, 3
je 0x401e67
mov dword [esp + 8], ecx
xor ebx, ebx
mov edx, dword [esp + 0x30]
mov dword [esp + 0x14], eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, esi
shr eax, 0x18
and eax, 0xf
mov ecx, dword [esp]
movzx eax, byte [ecx + eax]
shld esi, edx, 4
mov byte [esp + ebx + 0xa6], al
mov eax, dword [esp + 0x14]
shl edx, 4
inc ebx
cmp eax, ebx
jne 0x401cd0
mov dword [esp + 0x30], edx
lea eax, [esp + 0xa6]
lea edx, [eax + ebx]
mov ecx, dword [esp + 8]
sub ecx, ebx
jmp 0x401e6e
lea edx, [esp + 0xa5]
mov dword [esp + 0xc], edx
mov dword [esp + 4], 0
mov dword [esp + 0x14], edx
jmp 0x401ee8
mov byte [esp + 0x3a], 0x2d
mov esi, 1
sub esi, eax
cmp esi, 0x64
mov eax, 4
sbb eax, 0xffffffff
mov dword [esp], eax
mov eax, esi
mov ecx, 0xcccccccd
mul ecx
shr edx, 2
and edx, 0xfffffffe
lea eax, [edx + edx*4]
mov dword [esp + 8], eax
mov ebx, esi
mov eax, esi
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 + 8]
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]
mov byte [esp + 0x38], dl
mov byte [esp + edx + 0x38], bl
add al, 0x30
mov byte [esp + edx + 0x37], al
cmp esi, 0x64
jb 0x401de9
mov ebx, edx
mov eax, esi
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 edx, dword [esp + 4]
sub edx, dword [esp + 0x14]
inc edx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x14], 0x3000001
mov ecx, dword [esp + 0x10]
jmp 0x4029f5
mov edx, ecx
add dword [esp + 0x28], 8
mov dword [esp + 0x24], eax
mov ecx, dword [esp + 0x40]
cmp ecx, 0xfffffffd
jl 0x401e37
cmp ecx, dword [esp]
jg 0x401e37
test ecx, ecx
jle 0x402050
sub eax, ecx
jg 0x401e2e
xor eax, eax
mov dword [esp + 4], eax
jmp 0x40243a
cmp edx, eax
jle 0x401e45
dec eax
mov dword [esp + 4], eax
jmp 0x4013e0
mov dword [esp + 4], 0
sub edx, 1
jb 0x4013e0
mov dword [esp + 4], edx
jmp 0x4013e0
add ecx, 3
jmp case.0x4012ae.74
lea edx, [esp + 0xa6]
cmp dword [esp + 0x18], 4
jb 0x401edd
mov dword [esp + 0x14], esi
mov eax, ecx
mov ecx, dword [esp + 0x30]
nop
mov dword [esp + 8], eax
mov eax, esi
shr eax, 0x18
and eax, 0xf
mov ebx, dword [esp]
movzx eax, byte [ebx + eax]
mov byte [edx], al
mov eax, esi
shr eax, 0x14
and eax, 0xf
movzx eax, byte [ebx + eax]
mov byte [edx + 1], al
mov eax, esi
shr eax, 0x10
and eax, 0xf
movzx eax, byte [ebx + eax]
mov byte [edx + 2], al
mov eax, esi
mov esi, dword [esp + 0x14]
shld esi, ecx, 0x10
shl ecx, 0x10
shr eax, 0xc
and eax, 0xf
movzx eax, byte [ebx + eax]
mov byte [edx + 3], al
mov eax, dword [esp + 8]
add edx, 4
mov dword [esp + 0x14], esi
add eax, 0xfffffffc
jne 0x401e80
lea esi, [esp + 0xa6]
mov dword [esp + 0x14], esi
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x54]
cmp al, 0x41
setne al
shl al, 5
or al, 0x50
mov byte [esp + 0x39], al
test ebx, ebx
js 0x401f09
mov byte [esp + 0x3a], 0x2b
jmp 0x401f10
mov byte [esp + 0x3a], 0x2d
neg ebx
cmp ebx, 0x3e7
mov dword [esp + 8], edx
ja 0x401f2e
cmp ebx, 0x63
jbe 0x402035
mov dword [esp], 5
jmp 0x401f35
mov dword [esp], 6
mov dword [esp + 0x18], 0
mov eax, ebx
mov ecx, 0xcccccccd
mov dword [esp + 0x10], ebx
mul ecx
shr edx, 2
and edx, 0xfffffffe
lea esi, [edx + edx*4]
mov eax, dword [esp + 0x10]
mov ebx, 0x66666667
imul ebx
mov ecx, edx
mov eax, edx
shr eax, 0x1f
sar ecx, 2
add ecx, eax
mov eax, ecx
imul ebx
mov eax, dword [esp + 0x10]
sub eax, esi
mov ebx, dword [esp]
mov byte [esp + 0x38], bl
or al, 0x30
mov byte [esp + ebx + 0x38], al
mov eax, edx
shr eax, 0x1f
sar edx, 2
add edx, eax
add edx, edx
lea edx, [edx + edx*4]
mov eax, dword [esp + 0x10]
sub ecx, edx
add cl, 0x30
mov byte [esp + ebx + 0x37], cl
cmp byte [esp + 0x18], 0
jne 0x4027bc
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]
mov ebx, dword [esp + 0x10]
sub ecx, eax
add cl, 0x30
lea eax, [esp + 0x38]
mov edx, dword [esp]
mov byte [edx + eax - 2], cl
cmp ebx, 0x3e8
jb 0x4027bc
mov eax, ebx
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 + 0x38]
mov edx, dword [esp]
mov byte [edx + eax - 3], cl
jmp 0x4027bc
cmp ebx, 9
jbe 0x4027b0
mov dword [esp], 4
mov al, 1
mov dword [esp + 0x18], eax
jmp 0x401f3d
cmp edx, eax
jl 0x402056
mov edx, eax
sub edx, ecx
mov dword [esp + 4], edx
jmp 0x40243a
mov dword [esp + 0x30], edx
jmp 0x40206b
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 4]
mov dword [esp + 0x28], ecx
mov ecx, eax
mov dword [esp + 0x18], ecx
test ebx, 0x100
jne 0x402245
mov eax, ebx
xor eax, 0xffffffbf
mov edx, ebx
or edx, 0x40
and edx, eax
movzx eax, byte [0x44e001]
xor al, 0x51
mov byte [esp + 0x14], al
mov esi, 0x200
mov dword [esp + 4], 0
mov dword [esp + 0x1c], ebx
mov dword [esp], edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x18]
cmp ecx, 0x5f5e100
mov edx, dword [esp + 0x30]
mov eax, edx
sbb eax, 0
jb 0x402100
push 0
push 0x5f5e100
push edx
push ecx
mov dword [esp + 0x28], ecx
call fcn.0040c990
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x18]
imul ecx, eax, 0x5f5e100
sub edx, ecx
mov dword [esp + 0x18], eax
jmp 0x402112
mov dword [esp + 0x30], 0
mov edx, ecx
mov dword [esp + 0x18], 0
lea eax, [esp + 0x5c]
add eax, esi
mov dword [esp + 0x10], eax
cmp dword [esp], 0
je 0x402190
mov eax, edx
test edx, edx
je 0x4021ce
mov eax, dword [esp + 4]
jmp 0x40216f
inc eax
mov ebx, eax
mov ecx, edx
mov eax, edx
mov edx, 0xcccccccd
mul edx
shr edx, 3
lea eax, [edx + edx]
lea eax, [eax + eax*4]
sub ecx, eax
or cl, 0x30
mov byte [esp + esi + 0x63], cl
dec esi
mov ecx, edx
mov eax, ebx
mov ebx, dword [esp + 0x1c]
mov edx, ecx
test ecx, ecx
je 0x4021d2
cmp dword [esp], 0
je 0x402141
cmp eax, 3
jne 0x402140
movzx eax, byte [esp + 0x14]
mov byte [esp + esi + 0x63], al
dec esi
dec dword [esp + 0x10]
xor eax, eax
mov ecx, edx
jmp 0x402169
mov ecx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, ecx
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 + esi + 0x62], ax
add esi, 0xfffffffe
cmp ecx, 0x64
mov ecx, edx
jae 0x4021a0
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 4]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x18]
or eax, dword [esp + 0x30]
lea eax, [esp + esi + 0x64]
je 0x4022cd
mov ecx, dword [esp + 0x10]
cmp eax, ecx
mov edx, dword [esp]
jne 0x40221c
jmp 0x4020c0
mov eax, dword [esp + 4]
mov dword [esp + 4], eax
mov byte [esp + esi + 0x63], 0x30
dec esi
lea eax, [esp + esi]
add eax, 0x64
cmp eax, ecx
je 0x4020c0
test edx, edx
je 0x402200
mov eax, dword [esp + 4]
cmp eax, 3
je 0x402230
inc eax
jmp 0x402204
movzx eax, byte [esp + 0x14]
mov byte [esp + esi + 0x63], al
dec esi
dec ecx
mov dword [esp + 4], 0
jmp 0x40220e
mov eax, 1
mov ecx, dword [esp + 8]
cmp ecx, 0xffffffff
je 0x402255
mov eax, ecx
mov dword [esp + 8], 0
cmp dword [esp + 0x18], 0x400
mov ecx, dword [esp + 0x30]
sbb ecx, 0
jb 0x402272
mov dword [esp + 8], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x5c], eax
fild qword [esp + 0x58]
xor eax, eax
test ebx, 0x800
sete al
fld qword [eax*8 + 0x44b550]
cmp ebx, 0x3ffffff
ja 0x40234f
fld st(0)
fchs
fxch st(1)
fucom st(2)
fnstsw ax
sahf
jbe 0x402376
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
jbe 0x402376
fstp st(0)
fstp st(0)
jmp 0x4023f0
mov dword [esp], eax
cmp byte [esp + esi + 0x64], 0x30
sete ch
cmp esi, 0x200
setne cl
mov byte [esp + 0x38], 0
mov byte [esp + 0x44], 0
mov dl, 0x2d
test bl, bl
js 0x40230a
mov dl, 0x20
test bl, 4
jne 0x40230a
mov eax, ebx
or eax, 2
mov esi, eax
mov eax, ebx
xor eax, 0xfffffffd
mov dl, 0x2b
test esi, eax
je 0x402313
mov byte [esp + 0x44], 1
mov byte [esp + 0x45], dl
and cl, ch
movzx eax, cl
mov edx, dword [esp]
add edx, eax
mov eax, edx
lea ecx, [esp + 0x264]
xor eax, ecx
mov esi, edx
not esi
and esi, ecx
add esi, esi
sub esi, eax
mov dword [esp + 0x24], esi
jne 0x402356
mov byte [edx - 1], 0x30
dec edx
mov dword [esp], edx
mov dword [esp + 0x24], 1
mov ecx, 1
jmp 0x40235b
fstp st(0)
jmp 0x4023f0
mov ecx, esi
mov dword [esp], edx
mov eax, dword [esp + 8]
xor edx, edx
test eax, eax
jg 0x402367
xor eax, eax
add ecx, 0x3000000
mov dword [esp + 0x14], ecx
jmp 0x402a81
fdiv st(2), st(0)
lea ecx, [ebx + 0x1000000]
cmp ebx, 0x2ffffff
ja 0x4023ea
fucom st(2)
fnstsw ax
sahf
jbe 0x402398
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
ja 0x4023ea
fdiv st(2), st(0)
lea ecx, [ebx + 0x2000000]
cmp ebx, 0x1ffffff
ja 0x4023ea
fucom st(2)
fnstsw ax
sahf
jbe 0x4023ba
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
ja 0x4023ea
fdiv st(2), st(0)
lea ecx, [ebx + 0x3000000]
cmp ebx, 0xffffff
ja 0x4023ea
fucom st(2)
fnstsw ax
sahf
jbe 0x4036cb
fxch st(2)
fucom st(1)
fstp st(1)
fnstsw ax
sahf
fldz
fxch st(1)
fxch st(2)
jbe 0x4036cb
fstp st(0)
fstp st(0)
mov ebx, ecx
mov eax, 6
mov ecx, dword [esp + 8]
cmp ecx, 0xffffffff
je 0x402400
mov eax, ecx
sub esp, 0x18
fstp qword [esp + 8]
mov ecx, eax
lea eax, [esp + 0x58]
mov dword [esp + 4], eax
lea eax, [esp + 0x7c]
mov dword [esp], eax
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x10], ecx
lea ecx, [esp + 0x24]
lea edx, [esp + 0x3c]
call fcn.00403720
add esp, 0x18
test eax, eax
je 0x40243a
or ebx, 0x80
mov byte [esp + 0x38], 0
mov byte [esp + 0x44], 0
mov al, 0x2d
test bl, bl
js 0x402461
mov al, 0x20
test bl, 4
jne 0x402461
mov ecx, ebx
or ecx, 2
mov edx, ebx
xor edx, 0xfffffffd
mov al, 0x2b
test ecx, edx
je 0x40246a
mov byte [esp + 0x44], 1
mov byte [esp + 0x45], al
mov ecx, dword [esp + 0x40]
cmp ecx, 0x7000
mov dword [esp + 0x1c], ebx
jne 0x40248e
mov dword [esp + 0x14], 0
mov eax, dword [esp + 0xc]
mov dword [esp], eax
jmp 0x402a7d
test ecx, ecx
jle 0x402539
mov dword [esp], 0
test bl, 0x40
je 0x4024bb
mov eax, 0x258
sub eax, ecx
mov dword [esp], eax
mov edx, 0xaaaaaaab
mul edx
shr edx, 1
lea eax, [edx + edx*2]
sub dword [esp], eax
cmp ecx, dword [esp + 0x24]
jae 0x4025cb
mov dword [esp + 8], 0
lea ecx, [esp + 0xa4]
mov dword [esp + 0x14], ecx
jmp 0x40250d
mov dword [esp], ecx
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0xc]
mov ebx, dword [esp + 8]
movzx ecx, byte [ecx + ebx]
lea edx, [eax + 1]
mov dword [esp + 0x14], edx
mov edx, eax
mov byte [eax], cl
inc ebx
mov ecx, dword [esp + 0x40]
mov dword [esp + 8], ebx
cmp ebx, ecx
mov ebx, dword [esp + 0x1c]
jae 0x402622
test bl, 0x40
je 0x4024dd
mov ecx, dword [esp]
inc ecx
cmp ecx, 4
jne 0x4024da
mov ecx, ebx
and ecx, 0x40
shr ecx, 6
mov dword [esp], ecx
movzx ecx, byte [0x44e001]
xor cl, 0x51
mov eax, dword [esp + 0x14]
mov byte [eax], cl
inc eax
jmp 0x4024e1
mov byte [esp + 0xa4], 0x30
lea eax, [esp + 0xa5]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 4]
test eax, eax
je 0x402573
movzx eax, byte [section..data]
xor al, 0x26
mov byte [esp + 0xa5], al
lea eax, [esp + 0xa6]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 4]
neg ecx
mov edx, eax
cmp eax, ecx
jl 0x40257d
mov edx, ecx
test edx, edx
mov dword [esp], edx
je 0x40280c
mov ecx, dword [esp + 0x10]
mov eax, ecx
and eax, 3
je 0x402808
mov ebx, ecx
not ebx
and ebx, 3
lea esi, [edx - 1]
cmp ebx, esi
jb 0x4025a7
mov ebx, esi
lea eax, [ebx + 1]
push eax
push 0x30
push ecx
call fcn.0040ca80
mov ecx, dword [esp + 0x1c]
add esp, 0xc
add ecx, ebx
inc ecx
sub esi, ebx
mov ebx, dword [esp + 0x1c]
mov edx, dword [esp]
jmp 0x402812
xor esi, esi
mov ebx, 0xffffffff
lea ecx, [esp + 0xa4]
jmp 0x40260d
mov eax, dword [esp + 0x1c]
and eax, 0x40
shr eax, 6
mov dword [esp], eax
movzx eax, byte [0x44e001]
xor al, 0x51
mov byte [ecx], al
inc ecx
mov edx, ecx
mov eax, dword [esp + 0xc]
movzx eax, byte [eax + esi]
inc ecx
mov byte [edx], al
inc esi
dec ebx
cmp esi, dword [esp + 0x24]
jae 0x4026a4
test byte [esp + 0x1c], 0x40
je 0x4025f4
mov eax, dword [esp]
inc eax
cmp eax, 4
je 0x4025db
mov dword [esp], eax
jmp 0x4025f4
mov edx, dword [esp + 0x14]
mov dword [esp + 0x10], edx
cmp dword [esp + 4], 0
je 0x402649
movzx ecx, byte [section..data]
xor cl, 0x26
mov byte [eax + 1], cl
add eax, 2
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x10], eax
mov edx, dword [esp + 0x24]
mov esi, edx
sub esi, ecx
cmp esi, dword [esp + 4]
jbe 0x402661
mov edx, dword [esp + 4]
add edx, ecx
mov dword [esp + 0x24], edx
mov eax, dword [esp + 8]
mov dword [esp], edx
cmp eax, edx
jae 0x40274c
mov ebx, dword [esp + 0x1c]
mov edx, dword [esp + 0x10]
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0xc]
movzx ecx, byte [ecx + eax]
mov byte [edx], cl
inc edx
inc eax
mov ecx, dword [esp + 0x24]
cmp eax, ecx
jb 0x402680
mov dword [esp], ecx
mov dword [esp + 0x10], edx
mov ecx, dword [esp + 0x40]
jmp 0x402750
mov dword [esp + 8], edx
mov edx, dword [esp + 0x40]
mov eax, edx
sub eax, esi
jbe 0x402779
test byte [esp + 0x1c], 0x40
jne 0x402a07
mov dword [esp + 0x14], edx
cmp dword [esp + 0x14], esi
mov edx, dword [esp]
je 0x40365c
mov dword [esp + 0x18], eax
mov eax, ecx
and eax, 3
je 0x403658
mov edx, 2
sub edx, dword [esp + 8]
and edx, 3
not esi
mov eax, dword [esp + 0x14]
add eax, esi
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], edx
cmp edx, eax
mov edx, dword [esp + 0x10]
jb 0x402707
mov edx, eax
mov dword [esp + 0x10], edx
lea eax, [edx + 1]
push eax
push 0x30
push ecx
call fcn.0040ca80
add esp, 0xc
mov edx, dword [esp + 0x14]
add ebx, edx
mov eax, dword [esp + 0x18]
cmp ebx, eax
jb 0x40272a
mov ebx, eax
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x10]
add ecx, eax
add ecx, 2
sub edx, ebx
add esi, edx
mov eax, esi
mov edx, dword [esp]
jmp 0x40365c
mov ecx, edx
jmp 0x402a1d
mov ebx, dword [esp + 0x1c]
lea eax, [esp + 0xa4]
mov edx, dword [esp + 0x14]
sub edx, eax
add edx, 0x3000000
mov dword [esp + 0x14], edx
mov eax, dword [esp + 4]
sub eax, dword [esp]
add eax, ecx
mov ecx, dword [esp + 0x10]
jmp 0x402955
mov ebx, dword [esp + 0x1c]
mov edx, ecx
lea eax, [esp + 0xa4]
sub ecx, eax
add ecx, 0x3000000
mov dword [esp + 0x14], ecx
cmp dword [esp + 4], 0
je 0x4027f2
movzx eax, byte [section..data]
xor al, 0x26
mov byte [edx], al
mov eax, dword [esp + 4]
inc edx
mov ecx, edx
jmp 0x402955
mov byte [esp + 0x38], 3
or bl, 0x30
mov byte [esp + 0x3b], bl
add dword [esp + 0x28], 8
mov ecx, dword [esp + 8]
mov eax, ecx
sub eax, dword [esp + 0x14]
mov dword [esp + 0x40], eax
lea eax, [esp + 0xa4]
sub ecx, eax
mov dword [esp + 0x24], ecx
mov dword [esp + 0x14], 0x3000001
mov dword [esp], eax
xor eax, eax
mov edx, dword [esp + 4]
jmp 0x402a81
xor eax, eax
mov ecx, edx
jmp 0x402955
mov dword [esp + 4], 0
jmp 0x401600
mov esi, edx
jmp 0x402812
mov esi, edx
mov ecx, dword [esp + 0x10]
cmp esi, 4
jl 0x402856
mov eax, esi
cmp esi, 7
jl 0x402823
mov eax, 7
neg eax
lea ebx, [esi + eax]
add ebx, 3
and ebx, 0xfffffffc
lea eax, [ebx + 4]
push eax
push 0x30
push ecx
mov dword [esp + 0x1c], ecx
call fcn.0040ca80
mov ecx, dword [esp + 0x1c]
add esp, 0xc
sub esi, ebx
add esi, 0xfffffffc
add ecx, ebx
add ecx, 4
mov ebx, dword [esp + 0x1c]
mov edx, dword [esp]
test esi, esi
je 0x402878
push esi
push 0x30
push ecx
mov dword [esp + 0x1c], ecx
call fcn.0040ca80
mov edx, dword [esp + 0xc]
add esp, 0xc
mov eax, dword [esp + 0x10]
add eax, esi
mov esi, eax
jmp 0x40287a
mov esi, ecx
mov eax, dword [esp + 0x24]
lea ecx, [eax + edx]
cmp ecx, dword [esp + 4]
jle 0x40289e
mov eax, edx
not eax
mov edx, dword [esp + 4]
and eax, edx
add eax, eax
mov ecx, dword [esp]
xor ecx, edx
sub eax, ecx
mov dword [esp + 0x24], eax
test eax, eax
mov dword [esp + 8], eax
je 0x4028e8
mov ecx, eax
and ecx, 3
je 0x4028ec
xor edx, edx
mov eax, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, dword [esp + 0xc]
lea ebx, [esi + 1]
mov dword [esp + 0xc], ebx
movzx ebx, byte [esi]
mov byte [eax + edx], bl
inc edx
cmp ecx, edx
jne 0x4028c0
add eax, edx
mov esi, eax
mov ecx, dword [esp + 8]
mov eax, ecx
sub eax, edx
mov ebx, dword [esp + 0x1c]
jmp 0x4028ee
mov ecx, esi
jmp 0x402940
mov ecx, eax
cmp ecx, 4
mov ecx, esi
jb 0x402940
mov edx, dword [esp + 0xc]
lea esi, [edx + 1]
mov dword [esp + 0xc], esi
movzx edx, byte [edx]
mov byte [ecx], dl
mov edx, dword [esp + 0xc]
lea esi, [edx + 1]
mov dword [esp + 0xc], esi
movzx edx, byte [edx]
mov byte [ecx + 1], dl
mov edx, dword [esp + 0xc]
lea esi, [edx + 1]
mov dword [esp + 0xc], esi
movzx edx, byte [edx]
mov byte [ecx + 2], dl
mov edx, dword [esp + 0xc]
lea esi, [edx + 1]
mov dword [esp + 0xc], esi
movzx edx, byte [edx]
mov byte [ecx + 3], dl
add ecx, 4
add eax, 0xfffffffc
jne 0x4028f5
mov edx, dword [esp]
add edx, dword [esp + 8]
mov eax, dword [esp + 4]
sub eax, edx
mov dword [esp + 0x14], 0x3000001
mov edx, eax
test ebx, 0x100
je 0x4029f5
mov eax, ebx
and eax, 0x400
sete byte [esp + 0x38]
mov byte [esp + 0x39], 0x20
cmp ebx, 0x1000000
jb 0x4029f5
mov dword [esp + 0x10], ecx
shr ebx, 0x18
mov dword [esp], ebx
mov ebx, eax
shr ebx, 0xa
mov ecx, 2
sub ecx, ebx
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x1c]
cmp eax, 1
mov eax, 0
adc al, 1
test ecx, 0x800
jne 0x4029c0
mov ecx, dword [esp]
movzx ecx, byte [ecx + str._kMGT]
mov ebx, dword [esp + 4]
mov byte [esp + ebx + 0x38], cl
jmp 0x4029ed
mov ecx, dword [esp]
movzx ecx, byte [ecx + str._KMGT]
mov ebx, dword [esp + 4]
mov byte [esp + ebx + 0x38], cl
mov ecx, dword [esp + 0x1c]
and ecx, 0x1800
cmp ecx, 0x800
jne 0x4029ed
movzx eax, al
mov byte [esp + eax + 0x39], 0x69
inc eax
mov ecx, dword [esp + 0x10]
mov byte [esp + 0x38], al
lea eax, [esp + 0xa4]
sub ecx, eax
mov dword [esp + 0x24], ecx
mov dword [esp], eax
jmp 0x402a7f
mov ebx, dword [esp + 0x1c]
mov edx, dword [esp]
test eax, eax
jne 0x4036a5
jmp 0x40277d
mov eax, esi
cmp eax, 4
jb 0x402a43
mov edx, dword [ecx]
mov esi, edx
not esi
add edx, 0xfefefeff
and edx, esi
test edx, 0x80808080
jne 0x402a47
add ecx, 4
add eax, 0xfffffffc
cmp eax, 3
ja 0x402a22
test eax, eax
je 0x402a55
lea edx, [ecx + eax]
cmp byte [ecx], 0
je 0x402a55
inc ecx
dec eax
jne 0x402a4a
mov ecx, edx
mov edx, ecx
add dword [esp + 0x28], 4
sub edx, dword [esp]
mov dword [esp + 0x24], edx
mov byte [esp + 0x44], 0
mov byte [esp + 0x38], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x14], 0
xor edx, edx
xor eax, eax
mov dword [esp + 4], edx
mov ebx, dword [esp + 0x24]
cmp eax, ebx
jg 0x402a8f
mov eax, ebx
mov ecx, eax
movsx eax, byte [esp + 0x44]
mov dword [esp + 8], ecx
lea edx, [ecx + eax]
movsx esi, byte [esp + 0x38]
mov ecx, edx
and ecx, esi
xor edx, esi
add edx, dword [esp + 4]
lea edx, [edx + ecx*2]
mov ecx, dword [esp + 0x34]
cmp ecx, edx
jg 0x402ab9
mov ecx, edx
sub ecx, edx
mov dword [esp + 0x34], ecx
sub dword [esp + 8], ebx
mov ebx, dword [esp + 0x1c]
test bl, 1
mov esi, dword [esp + 0x20]
jne 0x402af3
test bl, 0x10
jne 0x402ad9
xor ebx, ebx
jmp 0x402af3
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 8]
cmp ecx, edx
jg 0x402ae7
mov ecx, edx
mov dword [esp + 8], ecx
mov dword [esp + 0x34], 0
mov edx, dword [esp]
mov ecx, dword [esp + 0x34]
add ecx, dword [esp + 8]
mov dword [esp + 0x1c], ebx
je 0x402fb1
test bl, 1
jne 0x402c44
cmp dword [esp + 0x34], 0
jle 0x402c44
mov edx, dword [esp + 0x34]
jmp 0x402b3e
mov edx, dword [esp + 0x34]
sub edx, ecx
test edx, edx
jle 0x402c3b
mov ecx, esi
sub ecx, edi
add ecx, 0x200
mov eax, edx
mov dword [esp + 0x34], edx
cmp edx, ecx
jl 0x402b54
mov eax, ecx
mov ecx, dword [esp + 0x34]
cmp dword [ebp + 8], 0
je 0x402b60
mov ecx, eax
test ecx, ecx
mov dword [esp + 0x20], esi
je 0x402bb0
mov eax, edi
and eax, 3
je 0x402bb0
mov ebx, edi
not ebx
and ebx, 3
mov dword [esp + 0x2c], ecx
lea esi, [ecx - 1]
cmp ebx, esi
jb 0x402b83
mov ebx, esi
lea eax, [ebx + 1]
push eax
push 0x20
push edi
call fcn.0040ca80
add esp, 0xc
add edi, ebx
inc edi
sub esi, ebx
mov ecx, dword [esp + 0x2c]
cmp esi, 4
jl 0x402bda
jmp 0x402bc0
mov esi, ecx
cmp esi, 4
jl 0x402bda
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [edi], 0x20202020
add edi, 4
mov eax, esi
xor eax, 4
and esi, 0xfffffffb
add esi, esi
sub esi, eax
cmp esi, 3
jg 0x402bc0
test esi, esi
je 0x402bf0
push esi
push 0x20
push edi
mov ebx, ecx
call fcn.0040ca80
mov ecx, ebx
add esp, 0xc
add edi, esi
mov esi, dword [esp + 0x20]
cmp dword [ebp + 8], 0
mov ebx, dword [esp + 0x1c]
je 0x402b30
mov eax, edi
sub eax, esi
cmp eax, 0x1ff
jl 0x402b30
mov edx, esi
mov esi, ebx
mov ebx, ecx
add dword [esp + 0x4c], eax
push eax
push dword [ebp + 0xc]
push edx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4036fe
mov edi, eax
mov ecx, ebx
mov ebx, esi
mov esi, edi
jmp 0x402b30
mov dword [esp + 0x34], edx
movzx eax, byte [esp + 0x44]
lea ecx, [esp + 0x45]
mov dword [esp + 0xc], ecx
jmp 0x402c59
mov edi, eax
mov esi, eax
movzx eax, byte [esp + 0x44]
test al, al
je 0x402d7d
movsx ecx, al
mov eax, ecx
cmp dword [ebp + 8], 0
je 0x402c89
mov eax, edi
sub eax, esi
mov edx, eax
xor edx, 0x200
not eax
and eax, 0x200
add eax, eax
sub eax, edx
cmp eax, ecx
jl 0x402c89
mov eax, ecx
sub cl, al
mov byte [esp + 0x44], cl
test eax, eax
je 0x402d2b
mov ecx, eax
and ecx, 3
je 0x402d70
mov ebx, eax
mov dword [esp + 0x20], esi
xor edx, edx
nop
nop
nop
nop
nop
nop
mov esi, dword [esp + 0xc]
lea eax, [esi + 1]
mov dword [esp + 0xc], eax
movzx eax, byte [esi]
mov byte [edi + edx], al
inc edx
cmp ecx, edx
jne 0x402cb0
add edi, edx
mov eax, ebx
mov ecx, ebx
sub ecx, edx
mov esi, dword [esp + 0x20]
mov ebx, dword [esp + 0x1c]
cmp eax, 4
jb 0x402d2b
nop
nop
nop
nop
nop
mov eax, dword [esp + 0xc]
lea edx, [eax + 1]
mov dword [esp + 0xc], edx
movzx eax, byte [eax]
mov byte [edi], al
mov eax, dword [esp + 0xc]
lea edx, [eax + 1]
mov dword [esp + 0xc], edx
movzx eax, byte [eax]
mov byte [edi + 1], al
mov eax, dword [esp + 0xc]
lea edx, [eax + 1]
mov dword [esp + 0xc], edx
movzx eax, byte [eax]
mov byte [edi + 2], al
mov eax, dword [esp + 0xc]
lea edx, [eax + 1]
mov dword [esp + 0xc], edx
movzx eax, byte [eax]
mov byte [edi + 3], al
add edi, 4
add ecx, 0xfffffffc
jne 0x402ce0
cmp dword [ebp + 8], 0
je 0x402c54
mov ecx, edi
not ecx
and ecx, esi
mov eax, esi
not eax
and eax, edi
sub eax, ecx
cmp eax, 0x1ff
jl 0x402c54
add dword [esp + 0x4c], eax
push eax
push dword [ebp + 0xc]
push esi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x402c50
jmp 0x4036fe
mov ecx, eax
cmp eax, 4
jae 0x402ce0
jmp 0x402d2b
mov dword [esp + 0x20], esi
mov eax, dword [esp + 0x14]
mov ecx, eax
shr ecx, 0x18
mov dword [esp + 0x2c], ecx
mov ecx, ebx
xor esi, esi
test cl, 0x40
je 0x402dad
and eax, 0xffffff
add eax, dword [esp + 8]
mov esi, dword [esp + 0x2c]
lea ecx, [esi + 1]
xor edx, edx
div ecx
sub esi, edx
mov edx, dword [esp + 8]
test edx, edx
jg 0x402de0
lea eax, [esp + 0x45]
mov dword [esp + 0xc], eax
mov edx, dword [esp]
jmp 0x4030e1
mov edx, dword [esp + 8]
sub edx, dword [esp + 0x14]
test edx, edx
jle 0x402fa5
mov ecx, dword [esp + 0x20]
sub ecx, edi
add ecx, 0x200
mov eax, edx
mov dword [esp + 8], edx
cmp edx, ecx
jl 0x402df8
mov eax, ecx
mov ecx, dword [esp + 8]
cmp dword [ebp + 8], 0
je 0x402e04
mov ecx, eax
mov eax, ebx
test al, 0x40
mov dword [esp + 0x14], ecx
jne 0x402e50
test ecx, ecx
je 0x402e60
mov eax, edi
and eax, 3
je 0x402e60
mov eax, edi
not eax
and eax, 3
dec ecx
cmp eax, ecx
jb 0x402e27
mov eax, ecx
mov dword [esp + 0x18], eax
inc eax
push eax
push 0x30
push edi
mov dword [esp + 0x1c], ecx
call fcn.0040ca80
mov edx, dword [esp + 0x1c]
add esp, 0xc
mov eax, dword [esp + 0x18]
sub edx, eax
add edi, eax
inc edi
cmp edx, 4
jge 0x402e67
jmp 0x402ea6
mov edx, ecx
jmp 0x402ea6
mov edx, ecx
cmp edx, 4
jl 0x402ea6
mov eax, edx
cmp edx, 7
jl 0x402e73
mov eax, 7
neg eax
add eax, edx
add eax, 3
and eax, 0xfffffffc
mov dword [esp + 0x18], eax
add eax, 4
push eax
push 0x30
push edi
mov dword [esp + 0x1c], edx
call fcn.0040ca80
mov edx, dword [esp + 0x1c]
add esp, 0xc
mov eax, dword [esp + 0x18]
add edi, eax
add edi, 4
sub edx, eax
add edx, 0xfffffffc
test edx, edx
je 0x402f00
test dl, 1
jne 0x402ec0
mov eax, edx
cmp edx, 1
jne 0x402f60
jmp 0x402f00
mov al, 0x30
mov ecx, ebx
test cl, 0x40
je 0x402ee6
cmp esi, dword [esp + 0x2c]
jne 0x402ee5
movzx eax, byte [0x44e001]
mov ecx, eax
add cl, al
and cl, 0xa2
sub al, cl
add al, 0x51
xor esi, esi
jmp 0x402ee6
inc esi
mov byte [edi], al
inc edi
lea eax, [edx - 1]
cmp edx, 1
jne 0x402f60
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [ebp + 8], 0
je 0x402dd0
mov eax, edi
mov ecx, dword [esp + 0x20]
sub eax, ecx
cmp eax, 0x1ff
jl 0x402dd0
add dword [esp + 0x4c], eax
push eax
push dword [ebp + 0xc]
push ecx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4036fe
mov edi, eax
mov dword [esp + 0x20], eax
jmp 0x402dd0
movzx ecx, byte [0x44e001]
mov edx, ecx
add dl, cl
and dl, 0xa2
sub cl, dl
add cl, 0x51
xor esi, esi
mov byte [edi + 1], cl
add edi, 2
add eax, 0xfffffffe
je 0x402f00
mov cl, 0x30
mov edx, ebx
test dl, 0x40
je 0x402f91
cmp esi, dword [esp + 0x2c]
jne 0x402f90
movzx edx, byte [0x44e001]
mov ch, dl
add ch, dl
and ch, 0xa2
sub dl, ch
add dl, 0x51
xor esi, esi
jmp 0x402f93
inc esi
mov dl, 0x30
mov byte [edi], dl
mov edx, ebx
test dl, 0x40
je 0x402f55
cmp esi, dword [esp + 0x2c]
je 0x402f40
inc esi
jmp 0x402f55
movzx eax, byte [esp + 0x44]
mov esi, dword [esp + 0x20]
mov edx, dword [esp]
lea ecx, [esp + 0x45]
mov dword [esp + 0xc], ecx
jmp 0x402fcc
mov edi, eax
mov esi, eax
mov edx, dword [esp]
movzx eax, byte [esp + 0x44]
test al, al
je 0x4030dd
movsx ecx, al
mov eax, ecx
cmp dword [ebp + 8], 0
je 0x402fee
mov eax, esi
sub eax, edi
add eax, 0x200
cmp eax, ecx
jl 0x402fee
mov eax, ecx
sub cl, al
mov byte [esp + 0x44], cl
test eax, eax
je 0x40308b
mov ecx, eax
and ecx, 3
je 0x4030d0
mov ebx, eax
mov dword [esp + 0x20], esi
xor edx, edx
nop
mov esi, dword [esp + 0xc]
lea eax, [esi + 1]
mov dword [esp + 0xc], eax
movzx eax, byte [esi]
mov byte [edi + edx], al
inc edx
cmp ecx, edx
jne 0x403010
add edi, edx
mov eax, ebx
mov ecx, ebx
sub ecx, edx
mov esi, dword [esp + 0x20]
mov ebx, dword [esp + 0x1c]
cmp eax, 4
jb 0x40308b
nop
nop
nop
nop
nop
mov eax, dword [esp + 0xc]
lea edx, [eax + 1]
mov dword [esp + 0xc], edx
movzx eax, byte [eax]
mov byte [edi], al
mov eax, dword [esp + 0xc]
lea edx, [eax + 1]
mov dword [esp + 0xc], edx
movzx eax, byte [eax]
mov byte [edi + 1], al
mov eax, dword [esp + 0xc]
lea edx, [eax + 1]
mov dword [esp + 0xc], edx
movzx eax, byte [eax]
mov byte [edi + 2], al
mov eax, dword [esp + 0xc]
lea edx, [eax + 1]
mov dword [esp + 0xc], edx
movzx eax, byte [eax]
mov byte [edi + 3], al
add edi, 4
add ecx, 0xfffffffc
jne 0x403040
cmp dword [ebp + 8], 0
je 0x402fc4
mov eax, edi
sub eax, esi
lea ecx, [eax + 1]
cmp ecx, 0x200
jl 0x402fc4
add dword [esp + 0x4c], eax
push eax
push dword [ebp + 0xc]
push esi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x402fc0
jmp 0x4036fe
mov ecx, eax
cmp eax, 4
jae 0x403040
jmp 0x40308b
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x24]
test esi, esi
jne 0x403361
mov edx, dword [esp + 4]
test edx, edx
mov esi, dword [esp + 0x20]
jne 0x40323e
lea eax, [esp + 0x39]
mov dword [esp + 0xc], eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + 0x38]
test cl, cl
je 0x40351d
movsx eax, cl
mov edx, esi
sub edx, edi
add edx, 0x200
cmp edx, eax
jl 0x403130
mov edx, eax
cmp dword [ebp + 8], 0
je 0x403138
mov eax, edx
movzx ecx, cl
sub ecx, eax
mov byte [esp + 0x38], cl
test eax, eax
je 0x4031db
mov ecx, eax
and ecx, 3
je 0x403220
mov dword [esp + 0x20], esi
xor edx, edx
nop
nop
nop
nop
nop
nop
mov esi, dword [esp + 0xc]
lea ebx, [esi + 1]
mov dword [esp + 0xc], ebx
movzx ebx, byte [esi]
mov byte [edi + edx], bl
inc edx
cmp ecx, edx
jne 0x403160
add edi, edx
mov ecx, eax
sub ecx, edx
mov esi, dword [esp + 0x20]
mov ebx, dword [esp + 0x1c]
cmp eax, 4
jb 0x4031db
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0xc]
lea edx, [eax + 1]
mov dword [esp + 0xc], edx
movzx eax, byte [eax]
mov byte [edi], al
mov eax, dword [esp + 0xc]
lea edx, [eax + 1]
mov dword [esp + 0xc], edx
movzx eax, byte [eax]
mov byte [edi + 1], al
mov eax, dword [esp + 0xc]
lea edx, [eax + 1]
mov dword [esp + 0xc], edx
movzx eax, byte [eax]
mov byte [edi + 2], al
mov eax, dword [esp + 0xc]
lea edx, [eax + 1]
mov dword [esp + 0xc], edx
movzx eax, byte [eax]
mov byte [edi + 3], al
add edi, 4
add ecx, 0xfffffffc
jne 0x403190
cmp dword [ebp + 8], 0
je 0x403110
mov eax, edi
sub eax, esi
cmp eax, 0x1ff
jl 0x403110
add dword [esp + 0x4c], eax
push eax
push dword [ebp + 0xc]
push esi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4036fe
mov edi, eax
mov esi, eax
jmp 0x403110
mov ecx, eax
cmp eax, 4
jae 0x403190
jmp 0x4031db
mov edx, dword [esp + 4]
sub edx, dword [esp + 0x2c]
je 0x4030fd
mov ecx, esi
sub ecx, edi
add ecx, 0x200
mov eax, edx
mov dword [esp + 4], edx
cmp edx, ecx
jl 0x403254
mov eax, ecx
mov ecx, dword [esp + 4]
cmp dword [ebp + 8], 0
je 0x403260
mov ecx, eax
test ecx, ecx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x20], esi
je 0x4032b0
mov eax, edi
and eax, 3
je 0x4032b0
mov ebx, edi
not ebx
and ebx, 3
lea esi, [ecx - 1]
cmp ebx, esi
jb 0x403283
mov ebx, esi
lea eax, [ebx + 1]
push eax
push 0x30
push edi
call fcn.0040ca80
add esp, 0xc
add edi, ebx
inc edi
sub esi, ebx
mov ebx, dword [esp + 0x1c]
cmp esi, 4
jge 0x4032b7
jmp 0x4032eb
mov esi, ecx
cmp esi, 4
jl 0x4032eb
mov eax, esi
cmp esi, 7
jl 0x4032c3
mov eax, 7
neg eax
lea ebx, [esi + eax]
add ebx, 3
and ebx, 0xfffffffc
lea eax, [ebx + 4]
push eax
push 0x30
push edi
call fcn.0040ca80
add esp, 0xc
add edi, ebx
add edi, 4
sub esi, ebx
add esi, 0xfffffffc
mov ebx, dword [esp + 0x1c]
test esi, esi
je 0x4032fd
push esi
push 0x30
push edi
call fcn.0040ca80
add esp, 0xc
add edi, esi
mov esi, dword [esp + 0x20]
cmp dword [ebp + 8], 0
je 0x403230
mov ecx, edi
xor ecx, esi
mov eax, esi
not eax
and eax, edi
add eax, eax
sub eax, ecx
cmp eax, 0x1ff
jl 0x403230
add dword [esp + 0x4c], eax
push eax
push dword [ebp + 0xc]
push esi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4036fe
mov edi, eax
mov esi, eax
jmp 0x403230
mov edx, ebx
mov ebx, esi
mov esi, dword [esp + 0x2c]
sub esi, dword [esp]
je 0x4030ed
mov ecx, dword [esp + 0x20]
sub ecx, edi
add ecx, 0x200
mov eax, esi
cmp esi, ecx
jl 0x403375
mov eax, ecx
mov ecx, esi
cmp dword [ebp + 8], 0
je 0x40337f
mov ecx, eax
cmp ecx, 4
mov dword [esp + 0x2c], esi
mov dword [esp], ecx
jl 0x4033e0
lea eax, [ecx - 4]
mov dword [esp + 8], eax
shr eax, 2
inc eax
and eax, 7
je 0x4033e4
mov esi, ebx
shl eax, 2
mov ebx, edx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [ebx + edx]
mov dword [edi + edx], ecx
add edx, 4
cmp eax, edx
jne 0x4033b0
add edi, edx
mov ecx, dword [esp]
sub ecx, edx
add ebx, edx
mov eax, ecx
mov edx, ebx
mov ebx, esi
mov esi, dword [esp + 0x2c]
cmp dword [esp + 8], 0x1c
jae 0x4033f0
jmp 0x403431
mov eax, ecx
jmp 0x403431
cmp dword [esp + 8], 0x1c
jb 0x403431
nop
nop
nop
nop
nop
mov eax, dword [edx]
mov dword [edi], eax
mov eax, dword [edx + 4]
mov dword [edi + 4], eax
mov eax, dword [edx + 8]
mov dword [edi + 8], eax
mov eax, dword [edx + 0xc]
mov dword [edi + 0xc], eax
mov eax, dword [edx + 0x10]
mov dword [edi + 0x10], eax
mov eax, dword [edx + 0x14]
mov dword [edi + 0x14], eax
mov eax, dword [edx + 0x18]
mov dword [edi + 0x18], eax
mov eax, dword [edx + 0x1c]
mov dword [edi + 0x1c], eax
add edi, 0x20
add edx, 0x20
lea eax, [ecx - 0x20]
add ecx, 0xffffffdc
cmp ecx, 0xfffffff8
mov ecx, eax
jb 0x4033f0
test eax, eax
je 0x4034c1
mov ecx, eax
and ecx, 7
je 0x403510
mov esi, edx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esi + edx]
mov byte [edi + edx], bl
inc edx
cmp ecx, edx
jne 0x403450
add edi, edx
mov ecx, eax
sub ecx, edx
add esi, edx
mov ebx, dword [esp + 0x1c]
mov edx, esi
mov esi, dword [esp + 0x2c]
cmp eax, 8
jb 0x4034c1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [edx]
mov byte [edi], al
movzx eax, byte [edx + 1]
mov byte [edi + 1], al
movzx eax, byte [edx + 2]
mov byte [edi + 2], al
movzx eax, byte [edx + 3]
mov byte [edi + 3], al
movzx eax, byte [edx + 4]
mov byte [edi + 4], al
movzx eax, byte [edx + 5]
mov byte [edi + 5], al
movzx eax, byte [edx + 6]
mov byte [edi + 6], al
movzx eax, byte [edx + 7]
add edx, 8
mov byte [edi + 7], al
add edi, 8
add ecx, 0xfffffff8
jne 0x403480
cmp dword [ebp + 8], 0
je 0x403358
mov esi, ebx
mov ebx, edx
mov eax, edi
mov edx, dword [esp + 0x20]
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 0x4036fe
mov edi, eax
mov dword [esp + 0x20], eax
jmp 0x403350
mov ecx, eax
cmp eax, 8
jae 0x403480
jmp 0x4034c1
test bl, 1
je 0x40364a
cmp dword [esp + 0x34], 0
mov eax, dword [esp + 0x50]
jle 0x40364e
mov edx, dword [esp + 0x34]
jne 0x403552
jmp 0x40364e
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x34]
sub edx, dword [esp + 0x2c]
je 0x40364e
mov ecx, esi
sub ecx, edi
add ecx, 0x200
mov eax, edx
mov dword [esp + 0x34], edx
cmp edx, ecx
jl 0x403568
mov eax, ecx
mov ecx, dword [esp + 0x34]
cmp dword [ebp + 8], 0
je 0x403574
mov ecx, eax
test ecx, ecx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x20], esi
je 0x4035c0
mov eax, edi
and eax, 3
je 0x4035c0
mov ebx, edi
not ebx
and ebx, 3
lea esi, [ecx - 1]
cmp ebx, esi
jb 0x403597
mov ebx, esi
lea eax, [ebx + 1]
push eax
push 0x20
push edi
call fcn.0040ca80
add esp, 0xc
add edi, ebx
inc edi
sub esi, ebx
cmp esi, 4
jge 0x4035c7
jmp 0x4035f7
mov esi, ecx
cmp esi, 4
jl 0x4035f7
mov eax, esi
cmp esi, 7
jl 0x4035d3
mov eax, 7
neg eax
lea ebx, [esi + eax]
add ebx, 3
and ebx, 0xfffffffc
lea eax, [ebx + 4]
push eax
push 0x20
push edi
call fcn.0040ca80
add esp, 0xc
add edi, ebx
add edi, 4
sub esi, ebx
add esi, 0xfffffffc
test esi, esi
je 0x403609
push esi
push 0x20
push edi
call fcn.0040ca80
add esp, 0xc
add edi, esi
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x50]
cmp dword [ebp + 8], 0
je 0x403544
mov eax, edi
sub eax, esi
cmp eax, 0x1ff
jl 0x403540
add dword [esp + 0x4c], eax
push eax
push dword [ebp + 0xc]
push esi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4036fe
mov edi, eax
mov esi, eax
jmp 0x403540
mov eax, dword [esp + 0x50]
mov dword [esp + 0x2c], edi
inc eax
jmp 0x401049
mov eax, dword [esp + 0x18]
cmp eax, 4
jb 0x40368b
mov esi, eax
and esi, 0xfffffffc
push esi
push 0x30
push ecx
mov dword [esp + 0x1c], ecx
mov ebx, edx
mov dword [esp + 0x24], eax
call fcn.0040ca80
mov eax, dword [esp + 0x24]
mov edx, ebx
mov ecx, dword [esp + 0x1c]
add esp, 0xc
and eax, 3
add ecx, esi
mov ebx, dword [esp + 0x1c]
test eax, eax
jne 0x4036a5
jmp 0x40277d
mov byte [ecx], 0x30
dec eax
inc ecx
test eax, eax
je 0x40277d
test bl, 0x40
je 0x403698
inc edx
cmp edx, 4
jne 0x403698
mov edx, eax
movzx eax, byte [0x44e001]
xor al, 0x51
mov byte [ecx], al
mov eax, edx
xor edx, edx
inc ecx
test eax, eax
jne 0x4036a5
jmp 0x40277d
fstp st(1)
fdivp st(1)
or ebx, 0x4000000
jmp 0x4023f0
test edx, edx
je 0x403704
mov ecx, dword [esp + 0x2c]
mov eax, ecx
sub eax, esi
test eax, eax
jle 0x40370b
add dword [esp + 0x4c], eax
push eax
push dword [ebp + 0xc]
push esi
call edx
add esp, 0xc
mov ecx, eax
mov esi, eax
jmp 0x40370b
xor ecx, ecx
xor esi, esi
jmp 0x40370b
mov ecx, dword [esp + 0x2c]
mov byte [ecx], 0
mov eax, dword [esp + 0x4c]
add eax, ecx
sub eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret