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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x270
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x24], eax
mov ecx, dword [ebp + 0x14]
mov esi, dword [ebp + 0x10]
lea eax, [esp + 0xac]
not eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x2c], 0
mov edi, esi
jmp 0x40104a
mov ecx, dword [esp + 0x4c]
mov edi, ebx
mov byte [esi], al
inc esi
inc ecx
mov dword [esp + 0x1c], edi
test cl, 3
mov dword [esp + 0x28], esi
mov edi, ecx
je 0x401060
movzx eax, byte [ecx]
jmp 0x40107e
mov eax, dword [ecx]
mov edx, eax
not edx
mov ecx, eax
xor ecx, 0x25252525
add ecx, 0xfefefeff
and edx, 0x80808080
test ecx, edx
je 0x4010eb
cmp al, 0x25
je 0x401154
mov esi, dword [esp + 0x28]
mov ecx, edi
test al, al
mov edi, dword [esp + 0x1c]
je 0x4036c1
cmp dword [ebp + 8], 0
je 0x401046
mov edx, edi
mov edi, dword [esp + 0x2c]
mov ebx, edx
mov dword [esp + 0x4c], ecx
mov edx, esi
not edx
and edx, ebx
mov ecx, ebx
not ecx
and ecx, esi
sub ecx, edx
cmp ecx, 0x1ff
jl 0x401040
add edi, ecx
push ecx
push dword [ebp + 0xc]
push ebx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
mov dword [esp + 0x2c], edi
je 0x4036e4
mov esi, eax
mov ecx, dword [esp + 0x4c]
movzx eax, byte [ecx]
mov edx, esi
mov edi, esi
jmp 0x401046
mov ecx, dword [esp + 0x1c]
sub ecx, esi
add ecx, 0x200
jmp 0x401132
mov dword [edx], eax
add edx, 4
mov dword [esp + 0x28], edx
mov eax, dword [edi + 4]
add edi, 4
mov edx, eax
not edx
mov esi, eax
xor esi, 0x25252525
add esi, 0xfefefeff
and edx, 0x80808080
add ecx, 0xfffffffc
test esi, edx
jne 0x40107e
lea esi, [eax - 0x1010101]
test edx, esi
jne 0x401086
cmp dword [ebp + 8], 0
mov edx, dword [esp + 0x28]
je 0x401100
cmp ecx, 4
jge 0x401100
jmp 0x40107e
add edi, 2
xor ebx, ebx
mov ecx, edi
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x1c]
jmp 0x401170
or ebx, 1
inc ecx
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [ecx - 1]
lea edx, [eax - 0x20]
cmp edx, 0x3f
ja case.0x401180.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 0x4011b9
or ebx, 0x100
inc ecx
jmp 0x401170
or ebx, 2
inc ecx
jmp 0x401170
test ebx, 0x800
jne 0x4011ca
or ebx, 0x900
inc ecx
jmp 0x401170
mov eax, ebx
and eax, 0xfffff7ff
xor eax, 0x1800
and ebx, 0x1000
or ebx, eax
inc ecx
jmp 0x401170
or ebx, 0x10
movzx eax, byte [ecx]
cmp al, 0x2a
jne 0x401208
mov eax, dword [esp + 0x24]
mov edx, dword [eax]
mov dword [esp + 0x3c], edx
add eax, 4
mov dword [esp + 0x24], eax
movzx eax, byte [ecx + 1]
inc ecx
jmp 0x401243
dec ecx
cmp al, 0x2a
je 0x4011eb
mov edx, eax
add dl, 0xd0
mov dword [esp + 0x3c], 0
cmp dl, 9
ja 0x401243
xor edi, edi
nop
nop
nop
nop
movzx eax, al
lea edx, [edi + edi*4]
lea edi, [eax + edx*2]
add edi, 0xffffffd0
movzx eax, byte [ecx + 1]
inc ecx
mov edx, eax
add dl, 0xd0
cmp dl, 0xa
jb 0x401220
mov dword [esp + 0x3c], edi
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x14], 0xffffffff
cmp al, 0x2e
jne 0x4012b3
movzx eax, byte [ecx + 1]
cmp al, 0x2a
jne 0x401271
mov eax, dword [esp + 0x24]
mov edx, dword [eax]
mov dword [esp + 0x14], edx
add eax, 4
mov dword [esp + 0x24], eax
movzx eax, byte [ecx + 2]
add ecx, 2
jmp 0x4012b3
inc ecx
mov edx, eax
add dl, 0xd0
mov dword [esp + 0x14], 0
cmp dl, 9
ja 0x4012b3
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, al
lea edx, [edi + edi*4]
lea edi, [eax + edx*2]
add edi, 0xffffffd0
movzx eax, byte [ecx + 1]
inc ecx
mov edx, eax
add dl, 0xd0
cmp dl, 0xa
jb 0x401290
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0x1c]
movzx eax, al
add eax, 0xffffffb7
cmp eax, 0x31
ja case.0x4012be.74
jmp dword [eax*4 + 0x44b664]
inc ecx
movzx eax, byte [ecx]
mov dword [esp + 0x4c], ecx
mov dword [esp + 0xc], eax
movzx eax, al
add eax, 0xffffffbf
cmp eax, 0x37
ja case.0x4012e0.67
jmp dword [eax*4 + 0x44b72c]
test bl, 0x20
jne 0x401727
mov eax, dword [esp + 0x24]
mov ecx, dword [eax]
add eax, 4
mov dword [esp + 0x24], eax
xor esi, esi
cmp byte [esp + 0xc], 0x75
je 0x401d21
test ecx, ecx
jns 0x401d21
neg ecx
or ebx, 0x80
jmp 0x401d21
movzx eax, byte [ecx + 1]
cmp al, 0x6c
jne 0x401769
or ebx, 0x20
add ecx, 2
jmp case.0x4012be.74
lea eax, [ecx + 1]
mov dword [esp + 0x4c], eax
movzx eax, byte [ecx + 1]
cmp eax, 0x33
je 0x401b51
mov dword [esp + 0xc], eax
cmp eax, 0x36
jne 0x401b64
cmp byte [ecx + 2], 0x34
jne 0x401b5b
or ebx, 0x20
add ecx, 3
jmp case.0x4012be.74
cmp byte [ecx + 1], 0x68
je 0x40176f
inc ecx
or ebx, 0x200
jmp case.0x4012be.74
mov eax, str.0123456789ABCDEFXP
cmp byte [esp + 0xc], 0x45
je 0x401390
mov eax, str.0123456789abcdefxp
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x24]
fld qword [eax]
mov eax, 6
mov ecx, dword [esp + 0x14]
cmp ecx, 0xffffffff
je 0x4013aa
mov eax, ecx
mov dword [esp + 0x18], eax
or eax, 0x80000000
sub esp, 0x18
mov dword [esp + 0x10], eax
fstp qword [esp + 8]
lea eax, [esp + 0x58]
mov dword [esp + 4], eax
lea eax, [esp + 0x84]
mov dword [esp], eax
lea ecx, [esp + 0x20]
lea edx, [esp + 0x38]
call fcn.00403700
add esp, 0x18
test eax, eax
je 0x4013ea
or ebx, 0x80
add dword [esp + 0x24], 8
mov byte [esp + 0x34], 0
mov byte [esp + 0x44], 0
mov al, 0x2d
test bl, bl
js 0x40140d
mov al, 0x20
test bl, 4
jne 0x40140d
mov al, 0x2b
test bl, 2
je 0x401416
mov byte [esp + 0x44], 1
mov byte [esp + 0x45], al
mov eax, dword [esp + 0x40]
mov esi, dword [esp + 8]
cmp eax, 0x7000
jne 0x4015f8
mov dword [esp + 0xc], 0
mov dword [esp + 4], esi
jmp 0x402a41
mov dword [esp + 0x30], str.0123456789ABCDEFXP
cmp byte [esp + 0xc], 0x41
je 0x401451
mov dword [esp + 0x30], str.0123456789abcdefxp
mov edi, 6
mov eax, dword [esp + 0x14]
cmp eax, 0xffffffff
je 0x401461
mov edi, eax
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 4]
test edx, edx
jns 0x40147d
mov eax, ebx
not eax
or eax, 0xffffff7f
add ebx, eax
add ebx, 0x81
mov eax, dword [esp + 0x24]
mov ecx, dword [eax]
mov al, 0x2d
test bl, bl
js 0x4015b8
mov al, 0x20
test bl, 4
jne 0x4015b8
mov al, 0x2b
test bl, 2
jne 0x4015b8
mov dword [esp + 4], 0
jmp 0x4015c2
mov dword [esp + 0x18], str.0123456789ABCDEFXP
mov eax, dword [esp + 0xc]
cmp al, 0x42
je 0x4014c8
mov dword [esp + 0x18], str.0123456789abcdefxp
mov byte [esp + 0x44], 0
test bl, 8
je 0x4014e7
cmp al, 0x42
setne al
mov word [esp + 0x44], 0x3002
shl al, 5
or al, 0x42
mov byte [esp + 0x46], al
mov dword [esp + 0x20], 0x180
mov ecx, 1
jmp 0x4017f4
mov eax, str.0123456789ABCDEFXP
cmp byte [esp + 0xc], 0x47
je 0x40150a
mov eax, str.0123456789abcdefxp
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x24]
fld qword [eax]
mov ecx, dword [esp + 0x14]
cmp ecx, 1
mov eax, ecx
adc eax, 0
mov esi, 6
cmp ecx, 0xffffffff
je 0x40152c
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 + 0x84]
mov dword [esp], ecx
mov dword [esp + 0x10], eax
lea ecx, [esp + 0x20]
lea edx, [esp + 0x38]
call fcn.00403700
add esp, 0x18
test eax, eax
je 0x40156b
or ebx, 0x80
mov ecx, dword [esp + 0x20]
cmp ecx, esi
jb 0x401575
mov ecx, esi
mov dword [esp + 0x10], ebx
mov eax, ecx
cmp ecx, 2
mov dword [esp + 4], esi
jb 0x402094
mov edx, dword [esp + 8]
mov ecx, esi
nop
nop
cmp byte [edx + eax - 1], 0x30
jne 0x402092
mov edi, eax
lea esi, [ecx - 1]
dec edi
mov eax, edi
cmp edi, 2
jb 0x402094
cmp ecx, 1
mov ecx, esi
jne 0x401590
jmp 0x402094
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
je 0x401b9d
add edx, 0xfffffc01
mov eax, 0xffffffff
add ecx, eax
mov eax, 0xfffff
adc esi, eax
add ecx, 1
adc esi, 0
jmp 0x401bae
mov dword [esp + 0x30], eax
mov dword [esp + 0x10], ebx
movzx ecx, byte [esi]
mov byte [esp + 0xac], cl
lea eax, [esp + 0xad]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x18]
test eax, eax
mov edi, esi
je 0x40163f
movzx ecx, byte [section..data]
xor cl, 0xb5
mov byte [esp + 0xad], cl
lea eax, [esp + 0xae]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x20]
lea edx, [ecx - 1]
cmp edx, eax
jbe 0x401651
lea ecx, [eax + 1]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x14], ecx
cmp ecx, 2
jb 0x401702
mov ecx, eax
cmp eax, edx
jb 0x401666
mov ecx, edx
lea esi, [ecx - 1]
mov edx, 1
cmp esi, 7
jb 0x4016d5
mov esi, ecx
and esi, 0xfffffff8
xor edx, edx
mov ebx, dword [esp + 4]
nop
nop
movzx eax, byte [edi + edx + 1]
mov byte [ebx + edx], al
movzx eax, byte [edi + edx + 2]
mov byte [ebx + edx + 1], al
movzx eax, byte [edi + edx + 3]
mov byte [ebx + edx + 2], al
movzx eax, byte [edi + edx + 4]
mov byte [ebx + edx + 3], al
movzx eax, byte [edi + edx + 5]
mov byte [ebx + edx + 4], al
movzx eax, byte [edi + edx + 6]
mov byte [ebx + edx + 5], al
movzx eax, byte [edi + edx + 7]
mov byte [ebx + edx + 6], al
movzx eax, byte [edi + edx + 8]
mov byte [ebx + edx + 7], al
add edx, 8
cmp esi, edx
jne 0x401680
add ebx, edx
mov dword [esp + 4], ebx
inc edx
and ecx, 7
je 0x401702
add edi, edx
xor edx, edx
mov esi, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [edi + edx]
mov byte [esi + edx], al
inc edx
cmp ecx, edx
jne 0x4016f0
add esi, edx
mov dword [esp + 4], esi
mov eax, dword [esp + 0xc]
movzx eax, byte [eax + 0xe]
mov byte [esp + 0x35], al
mov eax, dword [esp + 0x30]
test eax, eax
jle 0x401fcc
dec eax
mov byte [esp + 0x36], 0x2b
mov esi, eax
jmp 0x401fd8
mov eax, ebx
mov ecx, dword [esp + 0x24]
lea ebx, [ecx + 8]
mov esi, dword [ecx]
mov edx, dword [ecx + 4]
cmp byte [esp + 0xc], 0x75
je 0x401d17
test edx, edx
jns 0x401d17
neg esi
mov ecx, 0
sbb ecx, edx
or eax, 0x80
mov edx, ecx
mov ecx, esi
mov esi, edx
mov edx, ebx
mov ebx, eax
mov dword [esp + 0x24], edx
jmp 0x401d21
inc ecx
jmp 0x4012c9
add ecx, 2
or ebx, 0x200
jmp case.0x4012be.74
and ebx, 0xffffffef
mov dword [esp + 0x14], 8
mov dword [esp + 0x18], str.0123456789ABCDEFXP
mov eax, dword [esp + 0xc]
cmp al, 0x58
je 0x4017a0
mov dword [esp + 0x18], str.0123456789abcdefxp
mov dword [esp + 0x20], 0x440
mov byte [esp + 0x44], 0
mov ecx, 4
test bl, 8
je 0x4017f4
cmp al, 0x58
setne al
mov word [esp + 0x44], 0x3002
shl al, 5
or al, 0x58
mov byte [esp + 0x46], al
jmp 0x4017f4
mov byte [esp + 0x44], 0
test bl, 8
je 0x4017df
mov word [esp + 0x44], 0x3001
mov dword [esp + 0x20], 0x330
mov dword [esp + 0x18], str.0123456789ABCDEFXP
mov ecx, 3
mov dword [esp + 0x10], ebx
test bl, 0x20
jne 0x40180e
mov edx, dword [esp + 0x24]
mov edi, dword [edx]
add edx, 4
mov dword [esp + 0x24], edx
xor esi, esi
jmp 0x40181e
mov edx, dword [esp + 0x24]
mov edi, dword [edx]
mov esi, dword [edx + 4]
add edx, 8
mov dword [esp + 0x24], edx
mov dword [esp + 0x40], 0
mov byte [esp + 0x34], 0
mov edx, edi
or edx, esi
jne 0x401841
mov byte [esp + 0x44], 0
cmp dword [esp + 0x14], 0
je 0x401b71
mov edx, 0xffffffff
shl edx, cl
not edx
and edx, edi
mov ebx, dword [esp + 0x20]
mov cl, bh
shrd edi, esi, cl
mov eax, dword [esp + 0x18]
movzx ecx, byte [eax + edx]
mov byte [esp + 0x26b], cl
mov cl, bh
shr esi, cl
mov dword [esp + 0xc], ebx
test bh, 0x20
je 0x401875
mov edi, esi
xor esi, esi
mov ecx, edi
or ecx, esi
jne 0x401897
mov ecx, 1
cmp dword [esp + 0x14], 2
jge 0x401897
lea eax, [esp + 0x26b]
mov dword [esp + 4], eax
jmp 0x40196c
lea ecx, [esp + 0x26b]
mov dword [esp + 4], ecx
lea edx, [esp + 0x26c]
nop
nop
nop
nop
nop
nop
nop
test byte [esp + 0x10], 0x40
jne 0x4018c0
mov edx, dword [esp + 4]
jmp 0x401910
mov ebx, dword [esp + 0xc]
inc ebx
mov dword [esp + 0x20], ebx
mov ecx, ebx
shr ecx, 4
xor ecx, ebx
test cl, 0xf
mov ecx, dword [esp + 4]
je 0x4018e1
mov dword [esp + 0xc], ebx
mov edx, ecx
jmp 0x401910
and ebx, 0xfffffff0
mov dword [esp + 0x20], ebx
movzx ecx, byte [0x44e001]
mov ch, cl
add ch, cl
and ch, 0xa0
sub cl, ch
add cl, 0x50
mov byte [edx - 2], cl
add edx, 0xfffffffe
mov eax, dword [esp + 0x20]
mov dword [esp + 0xc], eax
nop
nop
nop
nop
nop
nop
nop
mov ebx, 0xffffffff
mov eax, dword [esp + 0xc]
mov cl, ah
shl ebx, cl
not ebx
and ebx, edi
mov eax, dword [esp + 0x20]
mov cl, ah
shrd edi, esi, cl
mov ecx, dword [esp + 0x18]
movzx ecx, byte [ecx + ebx]
mov byte [edx - 1], cl
mov cl, ah
shr esi, cl
mov dword [esp + 0xc], eax
test ah, 0x20
je 0x401946
mov edi, esi
xor esi, esi
lea ecx, [edx - 1]
mov dword [esp + 4], ecx
mov ecx, edi
or ecx, esi
jne 0x4018b0
lea ecx, [esp + 0x26c]
sub ecx, dword [esp + 4]
cmp ecx, dword [esp + 0x14]
jl 0x4018b0
mov dword [esp + 0x20], ecx
mov eax, dword [esp + 0xc]
shl eax, 0x14
and eax, 0xf000000
add eax, ecx
mov dword [esp + 0xc], eax
xor eax, eax
mov ebx, dword [esp + 0x10]
mov edi, dword [esp + 0x1c]
jmp 0x401fc3
mov eax, dword [esp + 0x24]
mov eax, dword [eax]
mov dword [esp + 4], str.null
test eax, eax
je 0x4019a7
mov dword [esp + 4], eax
mov eax, dword [esp + 0x14]
mov edx, eax
test eax, eax
jns 0x4019b6
mov edx, 0xffffffff
mov eax, dword [esp + 4]
test al, 3
je 0x4029b0
mov dword [esp + 0x18], edx
lea esi, [edx + eax]
cmp dword [esp + 0x14], 0
je 0x402a1a
cmp byte [eax], 0
je 0x4029a8
lea edx, [eax + 1]
mov eax, dword [esp + 0x18]
dec eax
mov ecx, edx
test dl, 3
je 0x4029ac
test eax, eax
je 0x402a1a
cmp byte [ecx], 0
je 0x402a12
mov eax, dword [esp + 4]
lea edx, [eax + 2]
mov eax, dword [esp + 0x18]
add eax, 0xfffffffe
mov ecx, edx
test dl, 3
je 0x4029ac
test eax, eax
je 0x402a1a
cmp byte [ecx], 0
je 0x402a12
mov eax, dword [esp + 4]
lea edx, [eax + 3]
mov eax, dword [esp + 0x18]
add eax, 0xfffffffd
mov ecx, edx
test dl, 3
je 0x4029ac
test eax, eax
je 0x402a1a
cmp byte [ecx], 0
je 0x402a12
mov eax, dword [esp + 4]
add eax, 4
add dword [esp + 0x18], 0xfffffffc
test al, 3
je 0x4036b8
mov ecx, eax
mov eax, dword [esp + 0x2c]
cmp dword [esp + 0x18], 0
je 0x401a78
mov esi, ecx
mov dword [esp + 0x2c], eax
mov edi, dword [esp + 0x1c]
jmp 0x402a1a
mov eax, dword [esp + 0xc]
mov byte [esp + 0x26b], al
mov dword [esp + 0x20], 1
mov byte [esp + 0x44], 0
mov byte [esp + 0x34], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0xc], 0
lea eax, [esp + 0x26b]
mov dword [esp + 4], eax
xor ebx, ebx
xor eax, eax
xor edx, edx
mov dword [esp + 0x3c], 0
jmp 0x402a45
mov ecx, dword [esp + 0x24]
movzx eax, byte [ecx]
add ecx, 4
mov dword [esp + 0x24], ecx
mov byte [esp + 0x26b], al
mov dword [esp + 0x20], 1
mov byte [esp + 0x44], 0
mov byte [esp + 0x34], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0xc], 0
lea eax, [esp + 0x26b]
jmp 0x40241c
mov eax, dword [esp + 0x24]
fld qword [eax]
add eax, 8
mov dword [esp + 0x24], eax
test ebx, 0x100
jne 0x401ee2
jmp 0x402171
mov edx, dword [esp + 0x24]
mov eax, dword [edx]
mov ecx, dword [esp + 0x2c]
sub ecx, edi
add ecx, esi
mov dword [eax], ecx
mov ecx, dword [esp + 0x4c]
add edx, 4
mov dword [esp + 0x24], edx
jmp 0x403567
cmp byte [ecx + 2], 0x32
je 0x4021c7
mov ecx, dword [esp + 0x4c]
jmp case.0x4012be.74
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0xc]
jmp 0x4012c9
mov dword [esp + 0x20], 0
mov dword [esp + 0xc], 0
lea eax, [esp + 0x26c]
mov dword [esp + 4], eax
xor eax, eax
xor edx, edx
mov ebx, dword [esp + 0x10]
mov edi, dword [esp + 0x1c]
jmp 0x402a45
xor edx, edx
mov eax, ecx
or eax, esi
je 0x401baa
mov edx, 0xfffffc02
mov dword [esp + 0x40], edx
shld esi, ecx, 8
shl ecx, 8
cmp edi, 0xe
mov dword [esp + 0x10], ebx
mov ebx, edx
jg 0x401c06
mov edx, edi
mov edi, ecx
mov eax, edx
and eax, 4
mov ecx, edx
or ecx, 4
imul ecx, eax
xor eax, 4
mov dword [esp + 0x54], edx
and edx, 0xfb
imul edx, eax
add ecx, edx
xor eax, eax
mov edx, 0x8000000
shrd eax, edx, cl
shr edx, cl
test cl, 0x20
je 0x401bf8
mov eax, edx
xor edx, edx
add edi, eax
mov dword [esp + 0x50], edi
adc esi, edx
mov edi, dword [esp + 0x54]
jmp 0x401c0a
mov dword [esp + 0x50], ecx
mov edx, dword [esp + 4]
movzx eax, dl
lea ecx, [esp + 0x44]
mov word [eax + ecx + 1], 0x7830
or dl, 2
mov byte [esp + 0x44], dl
mov eax, esi
shr eax, 0x1c
mov edx, dword [esp + 0x30]
movzx eax, byte [edx + eax]
mov byte [esp + 0xac], al
test edi, edi
je 0x401cf7
movzx eax, byte [section..data]
mov ecx, eax
add cl, al
and cl, 0x6a
sub al, cl
add al, 0xb5
mov byte [esp + 0xad], al
lea eax, [esp + 0xae]
mov dword [esp + 8], eax
mov ecx, edi
cmp edi, 0xd
jb 0x401c6f
mov ecx, 0xd
mov eax, edi
sub eax, ecx
jg 0x401c77
xor eax, eax
mov dword [esp + 0x18], eax
mov eax, ecx
and eax, 3
mov dword [esp + 0x58], ebx
je 0x4021cf
mov dword [esp + 4], ecx
mov dword [esp + 0x54], edi
mov edi, edx
xor edx, edx
mov ecx, dword [esp + 0x50]
nop
nop
nop
nop
nop
nop
mov ebx, esi
shr ebx, 0x18
and ebx, 0xf
movzx ebx, byte [edi + ebx]
shld esi, ecx, 4
mov byte [esp + edx + 0xae], bl
shl ecx, 4
inc edx
cmp eax, edx
jne 0x401ca0
mov dword [esp + 0x50], ecx
lea eax, [esp + 0xae]
add eax, edx
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 4]
sub ecx, edx
mov ebx, dword [esp + 0x58]
mov edx, edi
mov edi, dword [esp + 0x54]
cmp edi, 4
jae 0x4021e3
lea esi, [esp + 0xae]
mov eax, ebx
jmp 0x402265
lea eax, [esp + 0xad]
mov dword [esp + 8], eax
mov dword [esp + 0x18], 0
mov esi, eax
mov dword [esp + 0x14], eax
mov eax, ebx
jmp 0x402265
mov dword [esp + 0x24], ebx
mov ecx, esi
mov esi, edx
mov ebx, eax
mov dword [esp + 4], ecx
test ebx, 0x100
jne 0x401ea7
mov dword [esp + 0xc], esi
movzx edx, byte [0x44e001]
mov eax, edx
add al, dl
and al, 0xa0
mov ecx, edx
sub cl, al
add cl, 0x50
mov byte [esp + 0x30], cl
xor dl, 0x50
mov byte [esp + 0x18], dl
mov esi, 0x200
xor edi, edi
mov dword [esp + 0x10], ebx
nop
mov ecx, dword [esp + 4]
cmp ecx, 0x5f5e100
mov edx, dword [esp + 0xc]
mov eax, edx
sbb eax, 0
jb 0x401db0
push 0
push 0x5f5e100
push edx
push ecx
mov dword [esp + 0x14], ecx
call fcn.0040ca90
mov dword [esp + 0xc], edx
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 4]
imul ecx, eax, 0x5f5e100
sub edx, ecx
mov dword [esp + 4], eax
jmp 0x401dc2
mov dword [esp + 0xc], 0
mov edx, ecx
mov dword [esp + 4], 0
lea eax, [esp + 0x64]
lea ecx, [eax + esi]
test bl, 0x40
jne 0x401e83
mov dword [esp + 0x50], ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, edx
mov eax, edx
mov edx, 0x51eb851f
mul edx
shr edx, 5
imul eax, edx, 0x64
mov ebx, ecx
sub ebx, eax
movzx eax, word [ebx + ebx + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [esp + esi + 0x6a], ax
add esi, 0xfffffffe
cmp ecx, 0x64
jae 0x401de0
mov ebx, dword [esp + 0x10]
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 4]
or eax, dword [esp + 0xc]
jne 0x401e37
jmp 0x401f25
inc edi
mov byte [esp + esi + 0x6b], 0x30
dec esi
lea eax, [esp + esi]
add eax, 0x6c
cmp eax, ecx
je 0x401d60
test bl, 0x40
je 0x401e31
cmp edi, 3
jne 0x401e30
movzx eax, byte [esp + 0x18]
mov byte [esp + esi + 0x6b], al
dec esi
dec ecx
xor edi, edi
jmp 0x401e37
inc edi
mov ebx, edx
mov eax, edx
mov edx, 0xcccccccd
mul edx
shr edx, 3
lea eax, [edx + edx]
lea eax, [eax + eax*4]
sub ebx, eax
or bl, 0x30
mov byte [esp + esi + 0x6b], bl
dec esi
mov ebx, dword [esp + 0x10]
test edx, edx
je 0x401e12
test bl, 0x40
je 0x401e61
cmp edi, 3
jne 0x401e60
movzx eax, byte [esp + 0x30]
mov byte [esp + esi + 0x6b], al
dec esi
dec ecx
xor edi, edi
test edx, edx
jne 0x401e87
jmp 0x401e12
mov eax, 1
mov ecx, dword [esp + 0x14]
cmp ecx, 0xffffffff
je 0x401eb7
mov eax, ecx
mov dword [esp + 0x14], 0
cmp dword [esp + 4], 0x400
mov ecx, esi
sbb ecx, 0
jb 0x401ed2
mov dword [esp + 0x14], eax
mov eax, dword [esp + 4]
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], esi
fild qword [esp + 0x60]
xor eax, eax
test ebx, 0x800
sete al
fld qword [eax*8 + 0x44b550]
cmp ebx, 0x3ffffff
ja 0x401f1e
fld st(0)
fchs
fxch st(1)
fucom st(2)
fnstsw ax
sahf
jbe 0x4020f7
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
jbe 0x4020f7
fstp st(0)
fstp st(0)
jmp 0x402171
cmp byte [esp + esi + 0x6c], 0x30
sete al
cmp esi, 0x200
setne cl
mov byte [esp + 0x34], 0
mov byte [esp + 0x44], 0
mov dl, 0x2d
test bl, bl
js 0x401f58
mov dl, 0x20
test byte [esp + 0x10], 4
jne 0x401f58
mov dl, 0x2b
test byte [esp + 0x10], 2
je 0x401f61
mov byte [esp + 0x44], 1
mov byte [esp + 0x45], dl
and cl, al
movzx eax, cl
add esi, eax
lea eax, [esp + esi]
add eax, 0x6c
lea edx, [esi - 0x200]
neg edx
mov dword [esp + 0x20], edx
cmp esi, 0x200
jne 0x401f9a
mov byte [eax - 1], 0x30
dec eax
mov dword [esp + 4], eax
mov dword [esp + 0x20], 1
mov ecx, 1
jmp 0x401fa0
mov ecx, edx
mov dword [esp + 4], eax
mov ebx, dword [esp + 0x10]
xor eax, eax
cmp dword [esp + 0x14], 0
mov edi, dword [esp + 0x1c]
jg 0x401fb9
mov dword [esp + 0x14], 0
add ecx, 0x3000000
mov dword [esp + 0xc], ecx
mov edx, dword [esp + 0x14]
jmp 0x402a45
mov byte [esp + 0x36], 0x2d
mov esi, 1
sub esi, eax
xor eax, eax
cmp esi, 0x64
setge al
mov edi, eax
mov eax, esi
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, esi
sub ebx, eax
mov eax, ecx
mov edx, 0x66666667
imul edx
mov eax, edx
shr eax, 0x1f
sar edx, 2
add edx, eax
lea eax, [edi + 4]
add bl, 0x30
add edx, edx
lea edx, [edx + edx*4]
mov dword [esp + 0xc], edx
mov dword [esp + 0x30], eax
mov byte [esp + 0x34], al
mov byte [esp + edi + 0x38], bl
mov edx, ecx
sub edx, dword [esp + 0xc]
add dl, 0x30
mov byte [esp + edi + 0x37], dl
cmp esi, 0x64
jl 0x402070
mov eax, esi
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 esi, dword [esp + 0x30]
mov byte [esi + eax - 2], dl
mov edi, dword [esp + 0x18]
sub edi, dword [esp + 0x14]
inc edi
mov dword [esp + 0x40], ecx
mov dword [esp + 0xc], 0x3000001
mov esi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x10]
jmp 0x402988
mov esi, ecx
add dword [esp + 0x24], 8
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x40]
cmp ecx, 0xfffffffd
mov ebx, dword [esp + 0x10]
jl 0x4020cb
cmp ecx, dword [esp + 4]
jg 0x4020cb
test ecx, ecx
mov edi, dword [esp + 0x1c]
jle 0x4023d1
sub eax, ecx
jg 0x4020c2
xor eax, eax
mov dword [esp + 0x18], eax
jmp 0x4023dd
cmp esi, eax
mov edi, dword [esp + 0x1c]
jle 0x4020dd
dec eax
mov dword [esp + 0x18], eax
jmp 0x4013ef
mov dword [esp + 0x18], 0
sub esi, 1
jb 0x4013ef
mov dword [esp + 0x18], esi
jmp 0x4013ef
fdiv st(2), st(0)
lea ecx, [ebx + 0x1000000]
cmp ebx, 0x2ffffff
ja 0x40216b
fucom st(2)
fnstsw ax
sahf
jbe 0x402119
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
ja 0x40216b
fdiv st(2), st(0)
lea ecx, [ebx + 0x2000000]
cmp ebx, 0x1ffffff
ja 0x40216b
fucom st(2)
fnstsw ax
sahf
jbe 0x40213b
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
ja 0x40216b
fdiv st(2), st(0)
lea ecx, [ebx + 0x3000000]
cmp ebx, 0xffffff
ja 0x40216b
fucom st(2)
fnstsw ax
sahf
jbe 0x4036a9
fxch st(2)
fucom st(1)
fstp st(1)
fnstsw ax
sahf
fldz
fxch st(1)
fxch st(2)
jbe 0x4036a9
fstp st(0)
fstp st(0)
mov ebx, ecx
mov eax, 6
mov ecx, dword [esp + 0x14]
cmp ecx, 0xffffffff
je 0x402181
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 + 0x84]
mov dword [esp], eax
mov dword [esp + 0x30], ecx
mov dword [esp + 0x10], ecx
lea ecx, [esp + 0x20]
lea edx, [esp + 0x38]
call fcn.00403700
add esp, 0x18
test eax, eax
je 0x4023dd
or ebx, 0x80
jmp 0x4023dd
add ecx, 3
jmp case.0x4012be.74
lea eax, [esp + 0xae]
mov dword [esp + 0x14], eax
cmp edi, 4
jb 0x401ce9
mov dword [esp + 0x30], edx
mov eax, esi
mov edi, ecx
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x14]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp + 4], edi
mov ebx, esi
shr ebx, 0x18
and ebx, 0xf
mov edi, dword [esp + 0x30]
movzx ebx, byte [edi + ebx]
mov byte [edx], bl
mov ebx, esi
shr ebx, 0x14
and ebx, 0xf
movzx ebx, byte [edi + ebx]
mov byte [edx + 1], bl
mov ebx, esi
shr ebx, 0x10
and ebx, 0xf
movzx ebx, byte [edi + ebx]
mov byte [edx + 2], bl
shld eax, ecx, 0x10
shl ecx, 0x10
shr esi, 0xc
and esi, 0xf
movzx ebx, byte [edi + esi]
mov edi, dword [esp + 4]
mov byte [edx + 3], bl
add edx, 4
mov esi, eax
add edi, 0xfffffffc
jne 0x402200
mov dword [esp + 0x14], edx
lea esi, [esp + 0xae]
mov eax, dword [esp + 0x58]
cmp byte [esp + 0xc], 0x41
setne cl
shl cl, 5
or cl, 0x50
mov byte [esp + 0x35], cl
test eax, eax
js 0x40229e
mov byte [esp + 0x36], 0x2b
cmp eax, 0x3e7
ja 0x4022ac
cmp eax, 0x63
jbe 0x4023b1
mov dword [esp + 0xc], esi
mov dword [esp + 4], 5
jmp 0x4022b8
mov byte [esp + 0x36], 0x2d
neg eax
cmp eax, 0x3e7
jbe 0x402287
mov dword [esp + 0xc], esi
mov dword [esp + 4], 6
mov dword [esp + 0x30], 0
mov ecx, 0xcccccccd
mov edi, eax
mul ecx
shr edx, 2
and edx, 0xfffffffe
lea esi, [edx + edx*4]
mov eax, edi
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, edi
sub eax, esi
mov ebx, dword [esp + 4]
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 eax, [edx + edx*4]
sub ecx, eax
add cl, 0x30
mov byte [esp + ebx + 0x33], cl
cmp byte [esp + 0x30], 0
mov ecx, 0x51eb851f
mov esi, dword [esp + 0xc]
jne 0x402842
mov eax, edi
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 + 4]
mov byte [edx + eax - 2], cl
cmp edi, 0x3e8
jb 0x402842
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 + 4]
mov byte [edx + eax - 3], cl
jmp 0x402842
cmp eax, 9
jbe 0x402837
mov dword [esp + 0xc], esi
mov dword [esp + 4], 4
mov cl, 1
mov dword [esp + 0x30], ecx
jmp 0x4022c0
cmp esi, eax
jl 0x4023d7
mov esi, eax
sub esi, ecx
mov dword [esp + 0x18], esi
mov byte [esp + 0x34], 0
mov byte [esp + 0x44], 0
mov al, 0x2d
test bl, bl
js 0x4023fb
mov al, 0x20
test bl, 4
jne 0x4023fb
mov al, 0x2b
test bl, 2
je 0x402404
mov byte [esp + 0x44], 1
mov byte [esp + 0x45], al
mov ecx, dword [esp + 0x40]
cmp ecx, 0x7000
jne 0x402425
mov dword [esp + 0xc], 0
mov eax, dword [esp + 8]
mov dword [esp + 4], eax
jmp 0x402a41
test ecx, ecx
mov dword [esp + 0x10], ebx
jle 0x4024c0
xor esi, esi
test bl, 0x40
je 0x40245f
mov esi, ecx
not esi
and esi, 0x258
mov eax, ecx
and eax, 0x7ffffda7
sub esi, eax
mov eax, esi
mov edx, 0xaaaaaaab
mul edx
shr edx, 1
lea eax, [edx + edx*2]
mov ebx, dword [esp + 0x10]
sub esi, eax
cmp ecx, dword [esp + 0x20]
jae 0x402542
xor eax, eax
lea edi, [esp + 0xac]
jmp 0x40249a
mov ecx, edi
mov edx, dword [esp + 8]
movzx edx, byte [edx + eax]
inc edi
mov byte [ecx], dl
inc eax
mov edx, dword [esp + 0x40]
cmp eax, edx
jae 0x4025a9
mov ecx, dword [esp + 0x10]
test cl, 0x40
je 0x402480
inc esi
cmp esi, 4
jne 0x402480
mov esi, ecx
and esi, 0x40
shr esi, 6
movzx ecx, byte [0x44e001]
xor cl, 0x50
mov byte [edi], cl
inc edi
jmp 0x402480
mov byte [esp + 0xac], 0x30
lea edi, [esp + 0xad]
mov eax, dword [esp + 0x18]
test eax, eax
je 0x4024f2
movzx eax, byte [section..data]
xor al, 0xb5
mov byte [esp + 0xad], al
lea edi, [esp + 0xae]
mov eax, dword [esp + 0x18]
neg ecx
mov ebx, eax
cmp eax, ecx
jl 0x4024fc
mov ebx, ecx
test ebx, ebx
mov dword [esp + 0x14], ebx
je 0x40272c
mov eax, edi
and eax, 3
je 0x40272c
mov eax, ebx
mov ebx, edi
not ebx
and ebx, 3
lea esi, [eax - 1]
cmp ebx, esi
jb 0x402525
mov ebx, esi
lea eax, [ebx + 1]
push eax
push 0x30
push edi
call fcn.0040cb80
add esp, 0xc
add edi, ebx
inc edi
sub esi, ebx
mov ebx, dword [esp + 0x14]
jmp 0x40272e
mov dword [esp + 4], esi
xor eax, eax
mov edi, 0xffffffff
mov esi, 1
lea edx, [esp + 0xac]
jmp 0x40257b
mov ecx, dword [esp + 8]
movzx ecx, byte [ecx + esi - 1]
mov byte [edx], cl
mov ecx, edx
inc edx
inc eax
dec edi
inc esi
cmp eax, dword [esp + 0x20]
jae 0x402640
test bl, 0x40
je 0x402560
mov ecx, dword [esp + 4]
inc ecx
mov dword [esp + 4], ecx
cmp ecx, 4
jne 0x402560
mov ecx, ebx
and ecx, 0x40
shr ecx, 6
mov dword [esp + 4], ecx
movzx ecx, byte [0x44e001]
xor cl, 0x50
mov byte [edx], cl
inc edx
jmp 0x402560
mov esi, edi
mov dword [esp + 4], edi
cmp dword [esp + 0x18], 0
je 0x4025ce
movzx edx, byte [section..data]
xor dl, 0xb5
mov byte [ecx + 1], dl
add ecx, 2
mov edx, dword [esp + 0x40]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x20]
mov esi, ecx
sub esi, edx
cmp esi, dword [esp + 0x18]
jbe 0x4025e6
mov ecx, dword [esp + 0x18]
add ecx, edx
mov dword [esp + 0x20], ecx
cmp eax, ecx
jae 0x402616
mov edx, dword [esp + 4]
nop
nop
mov ecx, dword [esp + 8]
movzx ecx, byte [ecx + eax]
mov byte [edx], cl
mov ecx, eax
xor ecx, 1
and eax, 1
lea eax, [ecx + eax*2]
inc edx
mov ecx, dword [esp + 0x20]
cmp eax, ecx
jb 0x4025f0
mov dword [esp + 4], edx
mov edx, dword [esp + 0x40]
sub ecx, edx
lea eax, [esp + 0xac]
sub edi, eax
add edi, 0x3000000
mov dword [esp + 0xc], edi
mov edx, dword [esp + 0x18]
mov eax, edx
not eax
and eax, ecx
not ecx
and ecx, edx
sub ecx, eax
jmp 0x4028f1
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x14], ecx
sub ecx, eax
jbe 0x4027e9
test bl, 0x40
jne 0x4026e2
cmp dword [esp + 0x14], eax
je 0x4026bb
mov eax, edx
and eax, 3
je 0x4026bb
mov ebx, 2
sub ebx, dword [esp + 0xc]
and ebx, 3
mov eax, dword [esp + 0x14]
sub eax, esi
mov ecx, ebx
cmp ebx, eax
jb 0x402684
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 + 0x14]
cmp edi, ebx
jb 0x4026a1
mov edi, ebx
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x30]
lea edx, [eax + ecx]
add edx, 2
mov ecx, dword [esp + 0x14]
sub ecx, edi
sub ecx, esi
mov ebx, dword [esp + 0x10]
cmp ecx, 4
jb 0x4026e2
mov esi, ecx
and esi, 0xfffffffc
push esi
push 0x30
push edx
mov edi, edx
mov ebx, ecx
call fcn.0040cb80
mov ecx, ebx
mov edx, edi
mov ebx, dword [esp + 0x1c]
add esp, 0xc
add edx, esi
and ecx, 3
mov esi, dword [esp + 0x1c]
test ecx, ecx
jne 0x4026fc
jmp 0x4027ed
mov byte [edx], 0x30
dec ecx
inc edx
test ecx, ecx
je 0x4027ed
test bl, 0x40
je 0x4026ef
mov eax, dword [esp + 4]
inc eax
mov dword [esp + 4], eax
cmp eax, 4
jne 0x4026ef
movzx eax, byte [0x44e001]
xor al, 0x50
mov byte [edx], al
mov dword [esp + 4], 0
inc edx
test ecx, ecx
jne 0x4026fc
jmp 0x4027ed
mov esi, ebx
cmp esi, 4
jl 0x402767
mov eax, esi
cmp esi, 7
jl 0x40273f
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.0040cb80
add esp, 0xc
add edi, ebx
add edi, 4
sub esi, ebx
add esi, 0xfffffffc
mov ebx, dword [esp + 0x14]
test esi, esi
je 0x402779
push esi
push 0x30
push edi
call fcn.0040cb80
add esp, 0xc
add edi, esi
mov eax, dword [esp + 0x20]
lea ecx, [eax + ebx]
cmp ecx, dword [esp + 0x18]
jle 0x402790
mov eax, dword [esp + 0x18]
sub eax, ebx
mov dword [esp + 0x20], eax
test eax, eax
je 0x4028dd
mov edx, dword [esp + 0x18]
mov esi, edx
cmp edx, ecx
jl 0x4027a4
mov esi, ecx
mov ecx, eax
and ecx, 3
je 0x402887
mov dword [esp + 4], esi
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, dword [esp + 8]
lea edx, [ebx + 1]
mov dword [esp + 8], edx
movzx edx, byte [ebx]
mov byte [edi + esi], dl
inc esi
cmp ecx, esi
jne 0x4027c0
add edi, esi
mov ecx, eax
sub ecx, esi
mov ebx, dword [esp + 0x14]
mov esi, dword [esp + 4]
jmp 0x402889
mov esi, dword [esp + 0x1c]
mov eax, edx
not eax
lea ecx, [esp + 0xac]
and eax, ecx
mov ecx, edx
and ecx, dword [esp + 0x5c]
sub ecx, eax
add ecx, 0x3000000
mov dword [esp + 0xc], ecx
cmp dword [esp + 0x18], 0
je 0x40287f
movzx eax, byte [section..data]
mov ecx, eax
or cl, 0x4a
not al
or al, 0xb5
and al, cl
not al
mov byte [edx], al
mov ecx, dword [esp + 0x18]
inc edx
mov dword [esp + 4], edx
jmp 0x4028f9
mov byte [esp + 0x34], 3
or al, 0x30
mov byte [esp + 0x37], al
add dword [esp + 0x24], 8
mov ecx, dword [esp + 0x14]
mov eax, ecx
sub eax, esi
mov dword [esp + 0x40], eax
lea eax, [esp + 0xac]
sub ecx, eax
mov dword [esp + 0x20], ecx
xor edx, edx
mov dword [esp + 0xc], 0x3000001
mov dword [esp + 4], eax
mov edi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x18]
jmp 0x402a45
mov dword [esp + 4], edx
xor ecx, ecx
jmp 0x4028f9
mov ecx, eax
mov edx, ebx
sub edx, esi
cmp edx, 0xfffffffc
ja 0x4028dd
mov edx, dword [esp + 8]
lea esi, [edx + 1]
mov dword [esp + 8], esi
movzx edx, byte [edx]
mov byte [edi], dl
mov edx, dword [esp + 8]
lea esi, [edx + 1]
mov dword [esp + 8], esi
movzx edx, byte [edx]
mov byte [edi + 1], dl
mov edx, dword [esp + 8]
lea esi, [edx + 1]
mov dword [esp + 8], esi
movzx edx, byte [edx]
mov byte [edi + 2], dl
mov edx, dword [esp + 8]
lea esi, [edx + 1]
mov dword [esp + 8], esi
movzx edx, byte [edx]
mov byte [edi + 3], dl
add edi, 4
add ecx, 0xfffffffc
jne 0x402892
mov dword [esp + 4], edi
add ebx, eax
mov ecx, dword [esp + 0x18]
sub ecx, ebx
mov dword [esp + 0xc], 0x3000001
mov ebx, dword [esp + 0x10]
mov esi, dword [esp + 0x1c]
mov edi, ecx
test ebx, 0x100
je 0x402988
mov eax, ebx
and eax, 0x400
sete byte [esp + 0x34]
mov byte [esp + 0x35], 0x20
cmp ebx, 0x1000000
jb 0x402988
mov ecx, ebx
shr ecx, 0x18
mov dword [esp + 0x10], ecx
mov ecx, eax
shr ecx, 0xa
mov edx, 2
sub edx, ecx
cmp eax, 1
mov eax, 0
adc al, 1
test ebx, 0x800
jne 0x402958
mov ecx, dword [esp + 0x10]
movzx ecx, byte [ecx + str._kMGT]
mov byte [esp + edx + 0x34], cl
jmp 0x402980
mov ecx, dword [esp + 0x10]
movzx ecx, byte [ecx + str._KMGT]
mov byte [esp + edx + 0x34], cl
mov ecx, ebx
and ecx, 0x1800
cmp ecx, 0x800
jne 0x402980
movzx eax, al
mov byte [esp + eax + 0x35], 0x69
inc eax
mov byte [esp + 0x34], al
mov esi, dword [esp + 0x1c]
lea eax, [esp + 0xac]
mov ecx, dword [esp + 4]
sub ecx, eax
mov dword [esp + 0x20], ecx
xor edx, edx
mov dword [esp + 4], eax
mov eax, edi
mov edi, esi
jmp 0x402a45
mov esi, eax
jmp 0x402a1a
mov edx, eax
mov eax, ecx
mov dword [esp + 0x18], edx
mov ecx, edx
mov dword [esp + 0x14], eax
nop
nop
nop
nop
nop
nop
mov esi, ecx
cmp ecx, 4
mov dword [esp + 0x10], eax
jb 0x4029ef
mov edx, dword [eax]
mov ecx, eax
mov eax, edx
not eax
add edx, 0xfefefeff
and edx, eax
lea eax, [ecx + 4]
lea ecx, [esi - 4]
test edx, 0x80808080
mov edi, dword [esp + 0x1c]
je 0x4029c0
jmp 0x4029f3
test esi, esi
je 0x402a16
mov eax, esi
mov esi, dword [esp + 0x14]
add esi, dword [esp + 0x18]
xor edx, edx
mov ecx, dword [esp + 0x10]
cmp byte [ecx + edx], 0
je 0x402a10
inc edx
cmp eax, edx
jne 0x402a03
jmp 0x402a1a
add ecx, edx
mov esi, ecx
jmp 0x402a1a
mov esi, dword [esp + 0x10]
add dword [esp + 0x24], 4
sub esi, dword [esp + 4]
mov dword [esp + 0x20], esi
mov byte [esp + 0x44], 0
mov byte [esp + 0x34], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0xc], 0
xor eax, eax
xor edx, edx
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], ebx
mov ecx, dword [esp + 0x20]
mov ebx, edx
cmp edx, ecx
jg 0x402a59
mov ebx, ecx
movsx eax, byte [esp + 0x44]
movsx esi, byte [esp + 0x34]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x14], ebx
add edx, ebx
add edx, eax
add edx, esi
mov esi, dword [esp + 0x3c]
cmp esi, edx
jg 0x402a7b
mov esi, edx
sub esi, edx
mov edx, esi
sub dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x10]
test cl, 1
mov esi, dword [esp + 0x28]
jne 0x402a9d
test cl, 0x10
jne 0x402aa1
mov dword [esp + 0x10], 0
mov ecx, edx
jmp 0x402ab1
mov ecx, dword [esp + 0x14]
cmp edx, ecx
jg 0x402aab
mov edx, ecx
mov dword [esp + 0x14], edx
xor ecx, ecx
mov dword [esp + 0x3c], ecx
add ecx, dword [esp + 0x14]
jne 0x402ac4
mov edx, dword [esp + 0x10]
jmp 0x402f82
test byte [esp + 0x10], 1
jne 0x402bfb
mov ecx, dword [esp + 0x3c]
test ecx, ecx
jg 0x402af6
jmp 0x402bfb
mov esi, eax
mov edi, eax
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x28]
sub ecx, edx
test ecx, ecx
jle 0x402bf2
mov eax, edi
sub eax, esi
add eax, 0x200
mov edx, ecx
cmp ecx, eax
jl 0x402b07
mov edx, eax
cmp dword [ebp + 8], 0
jne 0x402b0f
mov edx, ecx
test edx, edx
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x28], edx
mov dword [esp + 0x1c], edi
je 0x402b60
mov eax, esi
and eax, 3
je 0x402b60
mov ecx, esi
not esi
and esi, 3
lea ebx, [edx - 1]
cmp esi, ebx
jb 0x402b36
mov esi, ebx
lea eax, [esi + 1]
push eax
push 0x20
mov edi, ecx
push ecx
call fcn.0040cb80
add esp, 0xc
add edi, esi
inc edi
sub ebx, esi
mov esi, edi
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x3c]
cmp ebx, 4
jge 0x402b67
jmp 0x402ba3
mov ebx, edx
cmp ebx, 4
jl 0x402ba3
mov ecx, esi
mov eax, ebx
cmp ebx, 7
jl 0x402b75
mov eax, 7
neg eax
lea esi, [ebx + eax]
add esi, 3
and esi, 0xfffffffc
lea eax, [esi + 4]
push eax
push 0x20
mov edi, ecx
push ecx
call fcn.0040cb80
add esp, 0xc
sub ebx, esi
add ebx, 0xfffffffc
add esi, edi
add esi, 4
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x3c]
test ebx, ebx
je 0x402bb9
push ebx
push 0x20
push esi
call fcn.0040cb80
mov ecx, dword [esp + 0x48]
add esp, 0xc
add esi, ebx
mov edx, dword [esp + 0x28]
cmp dword [ebp + 8], 0
je 0x402aec
mov eax, esi
sub eax, edi
cmp eax, 0x1ff
jl 0x402aec
add dword [esp + 0x2c], eax
push eax
push dword [ebp + 0xc]
push edi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x402ae0
jmp 0x4036e4
mov dword [esp + 0x3c], ecx
movzx eax, byte [esp + 0x44]
lea ecx, [esp + 0x45]
mov dword [esp + 8], ecx
jmp 0x402c19
mov esi, eax
mov edi, eax
movzx eax, byte [esp + 0x44]
test al, al
je 0x402d3d
movsx edx, al
mov ebx, edi
sub ebx, esi
add ebx, 0x200
cmp ebx, edx
jl 0x402c34
mov ebx, edx
cmp dword [ebp + 8], 0
jne 0x402c3c
mov ebx, edx
sub al, bl
mov byte [esp + 0x44], al
test ebx, ebx
je 0x402cdb
mov eax, ebx
and eax, 3
je 0x402d30
mov dword [esp + 0x1c], edi
xor edx, edx
nop
nop
nop
nop
nop
mov edi, esi
mov esi, dword [esp + 8]
lea ecx, [esi + 1]
mov dword [esp + 8], ecx
movzx ecx, byte [esi]
mov esi, edi
mov byte [edi + edx], cl
inc edx
cmp eax, edx
jne 0x402c60
add esi, edx
mov eax, ebx
sub eax, edx
mov edi, dword [esp + 0x1c]
cmp ebx, 4
jb 0x402cdb
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 8]
lea edx, [ecx + 1]
mov dword [esp + 8], edx
movzx ecx, byte [ecx]
mov byte [esi], cl
mov ecx, dword [esp + 8]
lea edx, [ecx + 1]
mov dword [esp + 8], edx
movzx ecx, byte [ecx]
mov byte [esi + 1], cl
mov ecx, dword [esp + 8]
lea edx, [ecx + 1]
mov dword [esp + 8], edx
movzx ecx, byte [ecx]
mov byte [esi + 2], cl
mov ecx, dword [esp + 8]
lea edx, [ecx + 1]
mov dword [esp + 8], edx
movzx ecx, byte [ecx]
mov byte [esi + 3], cl
add esi, 4
add eax, 0xfffffffc
jne 0x402c90
cmp dword [ebp + 8], 0
je 0x402c14
mov ecx, esi
not ecx
and ecx, edi
mov eax, edi
not eax
and eax, esi
sub eax, ecx
mov ecx, eax
xor ecx, 1
mov edx, eax
and edx, 1
lea ecx, [ecx + edx*2]
cmp ecx, 0x200
jl 0x402c14
add dword [esp + 0x2c], eax
push eax
push dword [ebp + 0xc]
push edi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x402c10
jmp 0x4036e4
mov eax, ebx
cmp ebx, 4
jae 0x402c90
jmp 0x402cdb
mov dword [esp + 0x1c], edi
mov eax, dword [esp + 0xc]
mov ecx, eax
shr ecx, 0x18
mov dword [esp + 0x28], ecx
xor ebx, ebx
mov edx, dword [esp + 0x10]
test dl, 0x40
je 0x402d73
and eax, 0xffffff
add eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x28]
lea ecx, [ebx + 1]
xor edx, edx
div ecx
sub ebx, edx
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
test eax, eax
jle 0x4030c3
mov edi, esi
mov esi, eax
mov dword [esp + 0x14], eax
jmp 0x402db6
mov edi, eax
mov dword [esp + 0x1c], eax
mov edx, dword [esp + 0x10]
mov eax, esi
mov ecx, dword [esp + 0x14]
xor eax, ecx
not esi
and esi, ecx
add esi, esi
sub esi, eax
mov dword [esp + 0x14], esi
test esi, esi
jle 0x402f77
cmp dword [ebp + 8], 0
je 0x402de3
mov edx, edi
mov eax, edi
not eax
mov ecx, dword [esp + 0x1c]
and eax, ecx
not ecx
and ecx, edi
sub eax, ecx
add eax, 0x200
mov ecx, dword [esp + 0x14]
mov esi, ecx
cmp ecx, eax
jl 0x402ddf
mov esi, eax
mov edx, dword [esp + 0x10]
test dl, 0x40
jne 0x402e40
test esi, esi
je 0x402e50
mov eax, edi
and eax, 3
je 0x402e50
mov ecx, edi
mov eax, edi
not eax
and eax, 3
lea ecx, [esi - 1]
cmp eax, ecx
jb 0x402e05
mov eax, ecx
mov dword [esp + 0x30], eax
inc eax
push eax
push 0x30
push edi
mov dword [esp + 0x18], ecx
call fcn.0040cb80
mov ecx, dword [esp + 0x18]
add esp, 0xc
mov eax, dword [esp + 0x30]
add edi, eax
inc edi
sub ecx, eax
mov edx, dword [esp + 0x10]
cmp ecx, 4
jge 0x402e57
jmp 0x402e9a
mov ecx, esi
jmp 0x402e9a
mov ecx, esi
cmp ecx, 4
jl 0x402e9a
mov eax, ecx
cmp ecx, 7
jl 0x402e63
mov eax, 7
neg eax
add eax, ecx
add eax, 3
and eax, 0xfffffffc
mov dword [esp + 0x30], eax
add eax, 4
push eax
push 0x30
push edi
mov dword [esp + 0x18], ecx
call fcn.0040cb80
mov ecx, dword [esp + 0x18]
add esp, 0xc
mov eax, dword [esp + 0x30]
sub ecx, eax
add ecx, 0xfffffffc
add edi, eax
add edi, 4
mov edx, dword [esp + 0x10]
test ecx, ecx
je 0x402ee0
test cl, 1
jne 0x402eb0
mov eax, ecx
cmp ecx, 1
jne 0x402f37
jmp 0x402ee0
mov al, 0x30
test dl, 0x40
je 0x402ecb
cmp ebx, dword [esp + 0x28]
jne 0x402eca
movzx eax, byte [0x44e001]
xor al, 0x50
xor ebx, ebx
jmp 0x402ecb
inc ebx
mov byte [edi], al
inc edi
lea eax, [ecx - 1]
cmp ecx, 1
jne 0x402f37
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [ebp + 8], 0
je 0x402d9a
mov eax, edi
mov ecx, dword [esp + 0x1c]
sub eax, ecx
cmp eax, 0x1ff
jl 0x402d9a
mov edi, dword [esp + 0x2c]
add edi, eax
push eax
push dword [ebp + 0xc]
push ecx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
mov dword [esp + 0x2c], edi
jne 0x402d90
jmp 0x4036e4
movzx ecx, byte [0x44e001]
xor cl, 0x50
xor ebx, ebx
mov byte [edi + 1], cl
add edi, 2
add eax, 0xfffffffe
je 0x402ee0
mov cl, 0x30
test dl, 0x40
je 0x402f61
cmp ebx, dword [esp + 0x28]
jne 0x402f60
movzx edx, byte [0x44e001]
xor dl, 0x50
xor ebx, ebx
jmp 0x402f63
inc ebx
mov dl, 0x30
mov byte [edi], dl
mov edx, dword [esp + 0x10]
test dl, 0x40
je 0x402f2c
cmp ebx, dword [esp + 0x28]
je 0x402f20
inc ebx
jmp 0x402f2c
movzx eax, byte [esp + 0x44]
mov esi, edi
mov edi, dword [esp + 0x1c]
lea ecx, [esp + 0x45]
mov dword [esp + 8], ecx
test al, al
jne 0x402fad
jmp 0x4030cf
movzx eax, byte [esp + 0x44]
test al, al
je 0x4030bd
movsx edx, al
mov ecx, edi
sub ecx, esi
add ecx, 0x200
cmp ecx, edx
jl 0x402fc0
mov ecx, edx
cmp dword [ebp + 8], 0
jne 0x402fc8
mov ecx, edx
sub al, cl
mov byte [esp + 0x44], al
test ecx, ecx
je 0x40306b
mov eax, ecx
and eax, 3
je 0x4030b0
mov dword [esp + 0x28], ecx
mov dword [esp + 0x1c], edi
xor edx, edx
nop
nop
nop
nop
nop
mov ebx, esi
mov esi, dword [esp + 8]
lea edi, [esi + 1]
mov dword [esp + 8], edi
movzx ecx, byte [esi]
mov esi, ebx
mov byte [ebx + edx], cl
inc edx
cmp eax, edx
jne 0x402ff0
add esi, edx
mov ecx, dword [esp + 0x28]
mov eax, ecx
sub eax, edx
mov edi, dword [esp + 0x1c]
cmp ecx, 4
jb 0x40306b
nop
nop
nop
mov ecx, dword [esp + 8]
lea edx, [ecx + 1]
mov dword [esp + 8], edx
movzx ecx, byte [ecx]
mov byte [esi], cl
mov ecx, dword [esp + 8]
lea edx, [ecx + 1]
mov dword [esp + 8], edx
movzx ecx, byte [ecx]
mov byte [esi + 1], cl
mov ecx, dword [esp + 8]
lea edx, [ecx + 1]
mov dword [esp + 8], edx
movzx ecx, byte [ecx]
mov byte [esi + 2], cl
mov ecx, dword [esp + 8]
lea edx, [ecx + 1]
mov dword [esp + 8], edx
movzx ecx, byte [ecx]
mov byte [esi + 3], cl
add esi, 4
add eax, 0xfffffffc
jne 0x403020
cmp dword [ebp + 8], 0
je 0x402fa0
mov ecx, esi
xor ecx, edi
mov eax, edi
not eax
and eax, esi
add eax, eax
sub eax, ecx
cmp eax, 0x1ff
jl 0x402fa0
add dword [esp + 0x2c], eax
push eax
push dword [ebp + 0xc]
push edi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4036e4
mov esi, eax
mov edi, eax
jmp 0x402fa0
mov eax, ecx
cmp ecx, 4
jae 0x403020
jmp 0x40306b
mov edx, dword [esp + 0x10]
jmp 0x4030cf
lea eax, [esp + 0x45]
mov dword [esp + 8], eax
mov edi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x20]
test ebx, ebx
jne 0x40325c
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x4030f8
lea eax, [esp + 0x35]
mov dword [esp + 8], eax
jmp 0x403438
mov eax, dword [esp + 0x18]
sub eax, ebx
je 0x4030e3
mov dword [esp + 0x18], eax
mov ebx, eax
cmp dword [ebp + 8], 0
je 0x403128
mov ecx, esi
sub ecx, edi
mov eax, 0x6871ebff
sub eax, ecx
and ecx, 0xfffffdff
and eax, 0x200
sub eax, ecx
mov ecx, dword [esp + 0x18]
mov ebx, ecx
cmp ecx, eax
jl 0x403128
mov ebx, eax
test ebx, ebx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x28], ebx
je 0x403180
mov eax, esi
and eax, 3
je 0x403180
mov ecx, esi
mov eax, ebx
mov ebx, esi
not ebx
and ebx, 3
lea esi, [eax - 1]
cmp ebx, esi
jb 0x40314f
mov ebx, esi
lea eax, [ebx + 1]
push eax
push 0x30
mov edi, ecx
push ecx
call fcn.0040cb80
add esp, 0xc
lea ecx, [ebx + edi]
inc ecx
sub esi, ebx
mov edi, dword [esp + 0x1c]
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0x28]
cmp esi, 4
jge 0x403189
mov eax, dword [esp + 0x2c]
jmp 0x4031cc
mov ecx, esi
mov esi, ebx
cmp esi, 4
jl 0x403177
mov eax, esi
cmp esi, 7
jl 0x403195
mov eax, 7
neg eax
lea edi, [esi + eax]
add edi, 3
and edi, 0xfffffffc
lea eax, [edi + 4]
push eax
push 0x30
mov ebx, ecx
push ecx
call fcn.0040cb80
add esp, 0xc
lea ecx, [edi + ebx]
add ecx, 4
sub esi, edi
add esi, 0xfffffffc
mov eax, dword [esp + 0x2c]
mov edi, dword [esp + 0x1c]
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0x28]
test esi, esi
mov dword [esp + 0x2c], eax
je 0x403200
push esi
push 0x30
mov edi, ecx
push ecx
call fcn.0040cb80
mov edx, dword [esp + 0x1c]
add esp, 0xc
add edi, esi
mov esi, edi
mov edi, dword [esp + 0x1c]
cmp dword [ebp + 8], 0
jne 0x40320c
jmp 0x4030f0
mov esi, ecx
cmp dword [ebp + 8], 0
je 0x4030f0
mov eax, esi
sub eax, edi
cmp eax, 0x1ff
jl 0x4030f0
add dword [esp + 0x2c], eax
push eax
push dword [ebp + 0xc]
push edi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4036e4
mov esi, eax
mov edi, eax
mov edx, dword [esp + 0x10]
jmp 0x4030f0
mov edi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x28]
mov eax, ebx
xor eax, esi
not ebx
and ebx, esi
add ebx, ebx
sub ebx, eax
mov esi, ecx
je 0x4030db
mov dword [esp + 0x1c], edi
mov eax, edi
mov edi, esi
sub eax, esi
add eax, 0x200
mov ecx, ebx
cmp ebx, eax
mov esi, ebx
jl 0x403275
mov ecx, eax
cmp dword [ebp + 8], 0
jne 0x40327d
mov ecx, esi
cmp ecx, 4
mov dword [esp + 0x28], ecx
jl 0x4032e0
lea ebx, [ecx - 4]
mov eax, ebx
shr eax, 2
inc eax
and eax, 7
je 0x4032e8
mov dword [esp + 0x14], ebx
shl eax, 2
xor edx, edx
mov ebx, dword [esp + 4]
nop
nop
nop
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 0x4032b0
add edi, edx
mov ecx, dword [esp + 0x28]
sub ecx, edx
add ebx, edx
mov dword [esp + 4], ebx
mov eax, ecx
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0x14]
jmp 0x4032e8
mov eax, ecx
mov ebx, dword [esp + 4]
jmp 0x403341
cmp ebx, 0x1c
mov ebx, dword [esp + 4]
jb 0x403341
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [ebx]
mov dword [edi], eax
mov eax, dword [ebx + 4]
mov dword [edi + 4], eax
mov eax, dword [ebx + 8]
mov dword [edi + 8], eax
mov eax, dword [ebx + 0xc]
mov dword [edi + 0xc], eax
mov eax, dword [ebx + 0x10]
mov dword [edi + 0x10], eax
mov eax, dword [ebx + 0x14]
mov dword [edi + 0x14], eax
mov eax, dword [ebx + 0x18]
mov dword [edi + 0x18], eax
mov eax, dword [ebx + 0x1c]
mov dword [edi + 0x1c], eax
add edi, 0x20
add ebx, 0x20
lea eax, [ecx - 0x20]
add ecx, 0xffffffdc
cmp ecx, 0xfffffff8
mov ecx, eax
jb 0x403300
test eax, eax
je 0x4033d1
mov ecx, eax
and ecx, 7
je 0x403420
mov dword [esp + 4], esi
xor edx, edx
mov esi, ebx
nop
nop
nop
nop
movzx ebx, byte [esi + edx]
mov byte [edi + edx], bl
inc edx
cmp ecx, edx
jne 0x403360
add edi, edx
mov ecx, eax
sub ecx, edx
add esi, edx
mov ebx, esi
mov edx, dword [esp + 0x10]
mov esi, dword [esp + 4]
cmp eax, 8
jb 0x4033d1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [ebx]
mov byte [edi], al
movzx eax, byte [ebx + 1]
mov byte [edi + 1], al
movzx eax, byte [ebx + 2]
mov byte [edi + 2], al
movzx eax, byte [ebx + 3]
mov byte [edi + 3], al
movzx eax, byte [ebx + 4]
mov byte [edi + 4], al
movzx eax, byte [ebx + 5]
mov byte [edi + 5], al
movzx eax, byte [ebx + 6]
mov byte [edi + 6], al
movzx eax, byte [ebx + 7]
add ebx, 8
mov byte [edi + 7], al
add edi, 8
add ecx, 0xfffffff8
jne 0x403390
mov dword [esp + 4], ebx
mov ecx, edi
cmp dword [ebp + 8], 0
je 0x403240
mov eax, ecx
mov edi, dword [esp + 0x1c]
sub eax, edi
cmp eax, 0x1ff
jl 0x403244
add dword [esp + 0x2c], eax
push eax
push dword [ebp + 0xc]
push edi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4036e4
mov ecx, eax
mov edi, eax
mov edx, dword [esp + 0x10]
jmp 0x403244
mov ecx, eax
cmp eax, 8
jae 0x403390
jmp 0x4033d1
mov esi, eax
mov edi, eax
mov edx, dword [esp + 0x10]
movzx ecx, byte [esp + 0x34]
test cl, cl
je 0x40354d
movsx edx, cl
mov eax, edi
sub eax, esi
add eax, 0x200
cmp eax, edx
jl 0x403457
mov eax, edx
cmp dword [ebp + 8], 0
jne 0x40345f
mov eax, edx
sub cl, al
mov byte [esp + 0x34], cl
test eax, eax
je 0x40350b
mov ecx, eax
and ecx, 3
je 0x403540
mov dword [esp + 0x28], eax
mov dword [esp + 0x1c], edi
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, esi
mov esi, dword [esp + 8]
lea edi, [esi + 1]
mov dword [esp + 8], edi
movzx ebx, byte [esi]
mov esi, eax
mov byte [eax + edx], bl
inc edx
cmp ecx, edx
jne 0x403490
add esi, edx
mov eax, dword [esp + 0x28]
mov ecx, eax
sub ecx, edx
mov edi, dword [esp + 0x1c]
cmp eax, 4
jb 0x40350b
nop
nop
nop
mov eax, dword [esp + 8]
lea edx, [eax + 1]
mov dword [esp + 8], edx
movzx eax, byte [eax]
mov byte [esi], al
mov eax, dword [esp + 8]
lea edx, [eax + 1]
mov dword [esp + 8], edx
movzx eax, byte [eax]
mov byte [esi + 1], al
mov eax, dword [esp + 8]
lea edx, [eax + 1]
mov dword [esp + 8], edx
movzx eax, byte [eax]
mov byte [esi + 2], al
mov eax, dword [esp + 8]
lea edx, [eax + 1]
mov dword [esp + 8], edx
movzx eax, byte [eax]
mov byte [esi + 3], al
add esi, 4
add ecx, 0xfffffffc
jne 0x4034c0
cmp dword [ebp + 8], 0
je 0x403434
mov eax, esi
sub eax, edi
cmp eax, 0x1ff
jl 0x403434
add dword [esp + 0x2c], eax
push eax
push dword [ebp + 0xc]
push edi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x403430
jmp 0x4036e4
mov ecx, eax
cmp eax, 4
jae 0x4034c0
jmp 0x40350b
test dl, 1
je 0x40369f
cmp dword [esp + 0x3c], 0
mov ecx, dword [esp + 0x4c]
jle 0x403567
mov edx, dword [esp + 0x3c]
jne 0x403578
inc ecx
jmp 0x40104a
mov edx, dword [esp + 0x3c]
sub edx, ebx
je 0x403567
mov eax, edi
sub eax, esi
add eax, 0x200
mov ebx, edx
cmp edx, eax
jl 0x403589
mov ebx, eax
cmp dword [ebp + 8], 0
jne 0x403591
mov ebx, edx
test ebx, ebx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x3c], edx
mov dword [esp + 0x28], ebx
je 0x4035f0
mov eax, esi
and eax, 3
je 0x4035f0
mov ecx, esi
mov eax, ebx
mov ebx, esi
not ebx
and ebx, 3
lea esi, [eax - 1]
cmp ebx, esi
jb 0x4035bc
mov ebx, esi
lea eax, [ebx + 1]
push eax
push 0x20
mov edi, ecx
push ecx
call fcn.0040cb80
add esp, 0xc
lea ecx, [ebx + edi]
inc ecx
sub esi, ebx
mov edi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x28]
cmp esi, 4
jge 0x4035f9
mov eax, dword [esp + 0x2c]
jmp 0x403638
mov ecx, esi
mov esi, ebx
cmp esi, 4
jl 0x4035e0
mov eax, esi
cmp esi, 7
jl 0x403605
mov eax, 7
neg eax
lea edi, [esi + eax]
add edi, 3
and edi, 0xfffffffc
lea eax, [edi + 4]
push eax
push 0x20
mov ebx, ecx
push ecx
call fcn.0040cb80
add esp, 0xc
lea ecx, [edi + ebx]
add ecx, 4
sub esi, edi
add esi, 0xfffffffc
mov eax, dword [esp + 0x2c]
mov edi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x28]
test esi, esi
mov dword [esp + 0x2c], eax
je 0x403660
push esi
push 0x20
mov edi, ecx
push ecx
call fcn.0040cb80
add esp, 0xc
add edi, esi
mov esi, edi
mov edi, dword [esp + 0x1c]
jmp 0x403662
mov esi, ecx
cmp dword [ebp + 8], 0
mov ecx, dword [esp + 0x4c]
je 0x403570
mov eax, esi
sub eax, edi
cmp eax, 0x1ff
jl 0x403570
add dword [esp + 0x2c], eax
push eax
push dword [ebp + 0xc]
push edi
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4036e4
mov esi, eax
mov edi, eax
mov ecx, dword [esp + 0x4c]
jmp 0x403570
mov ecx, dword [esp + 0x4c]
inc ecx
jmp 0x40104a
fstp st(1)
fdivp st(1)
or ebx, 0x4000000
jmp 0x402171
mov edx, dword [esp + 0x18]
jmp 0x4029b0
cmp dword [ebp + 8], 0
je 0x4036ea
mov eax, esi
sub eax, edi
test eax, eax
jle 0x4036ed
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 0x4036ed
xor esi, esi
xor edi, edi
jmp 0x4036ed
mov byte [esi], 0
mov eax, dword [esp + 0x2c]
add eax, esi
sub eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret