Function at 0x401000
Capabilities:
Authenticate hmac
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, 0x260
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 0x14]
mov esi, dword [ebp + 0x10]
mov dword [esp + 0x1c], 0
mov ebx, esi
jmp 0x40103f
mov esi, eax
mov eax, edi
movzx eax, byte [edi]
mov ebx, esi
mov byte [esi], al
inc esi
mov eax, edi
inc eax
test al, 3
mov dword [esp + 0x18], ebx
je 0x401050
mov edi, eax
movzx eax, byte [eax]
jmp 0x401082
mov ebx, esi
mov edi, eax
mov eax, dword [eax]
mov ecx, eax
not ecx
mov edx, eax
and edx, 0x1010101
mov esi, eax
and esi, 0xfefefefe
xor esi, 0x24242424
sub esi, edx
and esi, ecx
test esi, 0x80808080
je 0x4010c0
mov esi, ebx
mov ebx, dword [esp + 0x18]
cmp al, 0x25
je 0x401147
test al, al
je 0x4036ba
cmp dword [ebp + 8], 0
je 0x401039
mov ecx, esi
sub ecx, ebx
cmp ecx, 0x1ff
jl 0x401039
add dword [esp + 0x1c], ecx
push ecx
push dword [ebp + 0xc]
push ebx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x401030
jmp 0x4036df
mov edx, dword [esp + 0x18]
mov ecx, edx
mov esi, ebx
mov ebx, edx
sub ecx, esi
add ecx, 0x200
jmp 0x401120
mov dword [esi], eax
mov eax, dword [edi + 4]
mov ebx, esi
mov esi, eax
and esi, 0x1010101
mov edx, eax
and edx, 0xfefefefe
xor edx, 0x24242424
sub edx, esi
mov esi, eax
not esi
and edx, esi
mov esi, ebx
mov ebx, dword [esp + 0x18]
add esi, 4
add edi, 4
add ecx, 0xfffffffc
test edx, 0x80808080
jne 0x401082
mov edx, 0x1010100
sub edx, eax
or edx, eax
not edx
test edx, 0x80808080
jne 0x40108a
cmp dword [ebp + 8], 0
je 0x4010e0
cmp ecx, 4
jge 0x4010e0
jmp 0x401082
mov dword [esp + 0x4c], esi
add edi, 2
xor ebx, ebx
mov ecx, edi
mov edi, dword [esp + 0x1c]
jmp 0x401163
mov edx, 1
nop
nop
nop
or ebx, edx
inc ecx
movzx eax, byte [ecx - 1]
lea esi, [eax - 0x20]
cmp esi, 0x3f
ja case.0x401174.33
mov edx, 2
jmp dword [esi*4 + 0x44d564]
mov edx, 4
jmp case.0x401174.43
mov edx, 0x400
jmp case.0x401174.43
mov edx, 0x100
mov eax, ebx
test ebx, 0x100
je case.0x401174.43
mov edx, ebx
and edx, 0x800
add edx, 0x800
jmp case.0x401174.43
mov edx, 8
jmp case.0x401174.43
mov edx, 0x40
jmp case.0x401174.43
mov edx, ebx
xor edx, 0x10
add edx, ebx
and ebx, 0xffffffef
sub edx, ebx
movzx eax, byte [ecx]
mov ebx, edx
jmp 0x4011ca
dec ecx
cmp al, 0x2a
mov esi, dword [esp + 0x4c]
jne 0x4011ea
mov eax, dword [esp + 0x28]
mov edx, dword [eax]
mov dword [esp + 0x44], edx
add eax, 4
mov dword [esp + 0x28], eax
movzx eax, byte [ecx + 1]
inc ecx
jmp 0x401223
mov edx, eax
add dl, 0xd0
mov dword [esp + 0x44], 0
cmp dl, 9
ja 0x401223
xor edi, edi
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 0x401200
mov dword [esp + 0x44], edi
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x20], 0xffffffff
cmp al, 0x2e
mov dword [esp + 0x1c], edi
jne 0x401297
movzx eax, byte [ecx + 1]
cmp al, 0x2a
jne 0x401255
mov eax, dword [esp + 0x28]
mov edx, dword [eax]
mov dword [esp + 0x20], edx
add eax, 4
mov dword [esp + 0x28], eax
movzx eax, byte [ecx + 2]
add ecx, 2
jmp 0x401297
inc ecx
mov edx, eax
add dl, 0xd0
mov dword [esp + 0x20], 0
cmp dl, 9
ja 0x401297
xor edi, edi
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 0x401270
mov dword [esp + 0x20], edi
mov edx, ebx
mov edi, dword [esp + 0x1c]
jmp 0x401299
mov edx, ebx
movzx eax, al
add eax, 0xffffffb7
cmp eax, 0x31
ja case.0x4012a4.74
jmp dword [eax*4 + 0x44d664]
inc ecx
mov ebx, dword [esp + 0x18]
jmp 0x401322
movzx eax, byte [ecx + 1]
cmp al, 0x6c
jne 0x401381
or edx, 0x20
jmp 0x40131b
lea eax, [ecx + 1]
movzx ebx, byte [ecx + 1]
cmp ebx, 0x33
je 0x401a5e
mov edi, ebx
cmp ebx, 0x36
mov ebx, dword [esp + 0x18]
jne 0x401a73
cmp byte [ecx + 2], 0x34
jne 0x401f27
or edx, 0x20
add ecx, 3
mov edi, dword [esp + 0x1c]
jmp 0x401322
mov ebx, dword [esp + 0x18]
jmp 0x401322
mov eax, edx
and eax, 0xfffffdff
mov edx, ebx
xor edx, 0x200
add ebx, edx
mov edx, ebx
sub edx, eax
movzx eax, byte [ecx + 1]
cmp al, 0x68
jne 0x401381
add ecx, 2
mov ebx, dword [esp + 0x18]
movzx eax, byte [ecx]
mov dword [esp + 0x48], ecx
mov dword [esp + 4], eax
movzx eax, al
add eax, 0xffffffbf
cmp eax, 0x37
ja case.0x40133c.67
jmp dword [eax*4 + 0x44d72c]
test dl, 0x20
jne 0x40167b
mov eax, dword [esp + 0x28]
mov esi, dword [eax]
add eax, 4
mov dword [esp + 0x28], eax
cmp byte [esp + 4], 0x75
je 0x401bef
test esi, esi
jns 0x401bef
mov dword [esp + 8], 0
neg esi
or edx, 0x80
jmp 0x401bf7
inc ecx
mov dword [esp + 0x48], ecx
mov ebx, dword [esp + 0x18]
jmp 0x401329
mov eax, str.0123456789ABCDEFXP
cmp byte [esp + 4], 0x45
je 0x40139d
mov eax, str.0123456789abcdefxp
mov dword [esp + 0x2c], eax
mov esi, edx
mov eax, dword [esp + 0x28]
fld qword [eax]
mov ebx, 6
mov eax, dword [esp + 0x20]
cmp eax, 0xffffffff
je 0x4013b9
mov ebx, eax
mov eax, ebx
or eax, 0x80000000
sub esp, 0x18
mov dword [esp + 0x10], eax
fstp qword [esp + 8]
lea eax, [esp + 0x48]
mov dword [esp + 4], eax
lea eax, [esp + 0x74]
mov dword [esp], eax
lea ecx, [esp + 0x28]
lea edx, [esp + 0x3c]
call fcn.00403710
add esp, 0x18
mov edx, esi
test eax, eax
je 0x4013f6
or edx, 0x80
add dword [esp + 0x28], 8
mov byte [esp + 0x34], 0
mov byte [esp + 0x3c], 0
mov al, 0x2d
test dl, dl
js 0x401419
mov al, 0x20
test dl, 4
jne 0x401419
mov al, 0x2b
test dl, 2
je 0x401422
mov byte [esp + 0x3c], 1
mov byte [esp + 0x3d], al
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x14], 0
mov eax, dword [esp + 0x10]
cmp ecx, 0x7000
mov dword [esp + 4], eax
je 0x40282f
mov dword [esp], ecx
mov dword [esp + 0xc], edx
movzx ecx, byte [eax]
mov byte [esp + 0x9c], cl
lea esi, [esp + 0x9d]
test ebx, ebx
je 0x40147f
movzx ecx, byte [section..data]
mov edx, ecx
add dl, cl
and dl, 0x4e
sub cl, dl
add cl, 0x27
mov byte [esp + 0x9d], cl
lea esi, [esp + 0x9e]
mov eax, dword [esp + 0x24]
lea edx, [eax - 1]
cmp edx, ebx
jbe 0x401491
lea eax, [ebx + 1]
mov dword [esp + 0x24], eax
mov dword [esp + 0x14], eax
cmp eax, 2
mov dword [esp + 8], ebx
jb 0x4021c0
mov eax, esi
mov ecx, ebx
cmp ebx, edx
jb 0x4014ac
mov ebx, edx
lea esi, [ebx - 1]
mov edx, 1
cmp esi, 7
jae 0x402130
mov esi, eax
jmp 0x402191
mov esi, str.0123456789ABCDEFXP
cmp byte [esp + 4], 0x41
je 0x4014d5
mov esi, str.0123456789abcdefxp
mov ecx, 6
mov eax, dword [esp + 0x20]
cmp eax, 0xffffffff
je 0x4014e5
mov ecx, eax
mov dword [esp + 0x2c], ecx
mov eax, dword [esp + 0x28]
mov ecx, dword [eax + 4]
test ecx, ecx
jns 0x4014fa
or edx, 0x80
mov eax, dword [esp + 0x28]
mov edi, dword [eax]
mov al, 0x2d
test dl, dl
js 0x40163c
mov al, 0x20
test dl, 4
jne 0x40163c
mov al, 0x2b
test dl, 2
jne 0x40163c
xor ebx, ebx
jmp 0x401642
mov dword [esp + 0x2c], str.0123456789ABCDEFXP
mov eax, dword [esp + 4]
cmp al, 0x42
je 0x40153f
mov dword [esp + 0x2c], str.0123456789abcdefxp
mov byte [esp + 0x3c], 0
test dl, 8
je 0x40155e
cmp al, 0x42
setne al
mov word [esp + 0x3c], 0x3002
shl al, 5
or al, 0x42
mov byte [esp + 0x3e], al
mov dword [esp + 0x24], 0x180
mov ecx, 1
jmp 0x401732
mov eax, str.0123456789ABCDEFXP
cmp byte [esp + 4], 0x47
je 0x401581
mov eax, str.0123456789abcdefxp
mov dword [esp + 0x2c], eax
mov esi, edx
mov eax, dword [esp + 0x28]
fld qword [eax]
mov ecx, dword [esp + 0x20]
cmp ecx, 1
mov eax, ecx
adc eax, 0
mov edi, 6
cmp ecx, 0xffffffff
je 0x4015a5
mov edi, eax
lea eax, [edi - 1]
or eax, 0x80000000
sub esp, 0x18
fstp qword [esp + 8]
lea ecx, [esp + 0x48]
mov dword [esp + 4], ecx
lea ecx, [esp + 0x74]
mov dword [esp], ecx
mov dword [esp + 0x10], eax
lea ecx, [esp + 0x28]
lea edx, [esp + 0x3c]
call fcn.00403710
add esp, 0x18
test eax, eax
je 0x4015e1
or esi, 0x80
mov eax, dword [esp + 0x24]
cmp eax, edi
jb 0x4015eb
mov eax, edi
mov dword [esp + 0xc], esi
mov ecx, eax
mov dword [esp + 8], eax
cmp eax, 2
jb 0x4016b4
mov edx, dword [esp + 0x10]
mov ecx, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, dword [esp + 8]
cmp byte [edx + esi - 1], 0x30
jne 0x401ec8
lea eax, [ecx - 1]
dec esi
mov dword [esp + 8], esi
cmp esi, 2
jb 0x401eca
cmp ecx, 1
mov ecx, eax
jne 0x401610
jmp 0x401eca
mov byte [esp + 0x3d], al
mov bl, 1
mov eax, ecx
and eax, 0xfffff
shr ecx, 0x14
and ecx, 0x7ff
je 0x401ab0
add ecx, 0xfffffc01
mov dword [esp + 0x20], ecx
mov ecx, 0xffffffff
add edi, ecx
mov ecx, 0xfffff
adc eax, ecx
add edi, 1
adc eax, 0
jmp 0x401ac8
mov ecx, dword [esp + 0x28]
lea eax, [ecx + 8]
mov esi, dword [ecx]
mov ecx, dword [ecx + 4]
cmp byte [esp + 4], 0x75
mov dword [esp + 8], ecx
je 0x4016ab
test ecx, ecx
jns 0x4016ab
neg esi
mov ecx, 0
sbb ecx, dword [esp + 8]
or edx, 0x80
mov dword [esp + 8], ecx
mov dword [esp + 0x28], eax
jmp 0x401bf7
mov eax, edi
jmp 0x401eca
and edx, 0xffffffef
mov dword [esp + 0x20], 8
mov dword [esp + 0x2c], str.0123456789ABCDEFXP
mov eax, dword [esp + 4]
cmp al, 0x58
je 0x4016de
mov dword [esp + 0x2c], str.0123456789abcdefxp
mov dword [esp + 0x24], 0x440
mov byte [esp + 0x3c], 0
mov ecx, 4
test dl, 8
je 0x401732
cmp al, 0x58
setne al
mov word [esp + 0x3c], 0x3002
shl al, 5
or al, 0x58
mov byte [esp + 0x3e], al
jmp 0x401732
mov byte [esp + 0x3c], 0
test dl, 8
je 0x40171d
mov word [esp + 0x3c], 0x3001
mov dword [esp + 0x24], 0x330
mov dword [esp + 0x2c], str.0123456789ABCDEFXP
mov ecx, 3
mov dword [esp + 0xc], edx
test dl, 0x20
jne 0x40174c
mov eax, dword [esp + 0x28]
mov esi, dword [eax]
add eax, 4
mov dword [esp + 0x28], eax
xor edi, edi
jmp 0x40175c
mov eax, dword [esp + 0x28]
mov esi, dword [eax]
mov edi, dword [eax + 4]
lea edx, [eax + 8]
mov dword [esp + 0x28], edx
mov dword [esp + 0x30], 0
mov byte [esp + 0x34], 0
mov edx, esi
or edx, edi
jne 0x40177f
mov byte [esp + 0x3c], 0
cmp dword [esp + 0x20], 0
je 0x401a82
mov edx, 0xffffffff
shl edx, cl
not edx
and edx, esi
mov eax, dword [esp + 0x24]
mov cl, ah
shrd esi, edi, cl
mov ecx, dword [esp + 0x2c]
movzx ecx, byte [ecx + edx]
mov byte [esp + 0x25b], cl
mov cl, ah
shr edi, cl
test ah, 0x20
jne 0x4017af
mov ebx, esi
jmp 0x4017b3
mov ebx, edi
xor edi, edi
mov dword [esp + 0x14], eax
mov ecx, ebx
mov dword [esp], edi
or ecx, edi
jne 0x4017dc
mov ecx, 1
cmp dword [esp + 0x20], 2
jge 0x4017dc
lea eax, [esp + 0x25b]
mov dword [esp + 4], eax
jmp 0x4018b0
lea eax, [esp + 0x25b]
mov dword [esp + 4], eax
lea edi, [esp + 0x25c]
nop
nop
test byte [esp + 0xc], 0x40
mov eax, dword [esp + 0x14]
je 0x401840
mov ecx, eax
inc eax
mov dword [esp + 0x24], eax
mov esi, 0xe
sub esi, ecx
mov ecx, eax
shr ecx, 4
xor ecx, esi
not ecx
test cl, 0xf
jne 0x401840
and eax, 0xfffffff0
mov dword [esp + 0x24], eax
movzx eax, byte [0x450001]
xor al, 0xa7
mov byte [edi - 2], al
add edi, 0xfffffffe
mov dword [esp + 8], edi
mov eax, dword [esp + 0x24]
jmp 0x401848
mov ecx, dword [esp + 4]
mov dword [esp + 8], ecx
mov esi, 0xffffffff
mov cl, ah
shl esi, cl
not esi
and esi, ebx
mov edx, dword [esp + 0x24]
mov cl, dh
mov edi, dword [esp]
shrd ebx, edi, cl
mov eax, dword [esp + 0x2c]
movzx eax, byte [eax + esi]
mov ecx, dword [esp + 8]
mov esi, ecx
mov byte [ecx - 1], al
mov cl, dh
shr edi, cl
mov ecx, edi
test dh, 0x20
mov dword [esp + 0x14], edx
je 0x401885
mov ebx, ecx
xor ecx, ecx
mov edi, esi
lea eax, [esi - 1]
mov dword [esp + 4], eax
mov eax, ebx
mov dword [esp], ecx
or eax, ecx
jne 0x4017f0
lea ecx, [esp + 0x25c]
sub ecx, dword [esp + 4]
cmp ecx, dword [esp + 0x20]
jl 0x4017f0
mov dword [esp + 0x24], ecx
mov esi, dword [esp + 0x14]
shl esi, 0x14
and esi, 0xf000000
add esi, ecx
mov dword [esp + 0x14], esi
mov dword [esp + 8], 0
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 0x20]
jmp 0x402976
mov eax, dword [esp + 0x28]
mov eax, dword [eax]
mov ecx, str.null
test eax, eax
je 0x4018ed
mov ecx, eax
mov dword [esp + 4], ecx
mov eax, dword [esp + 0x20]
mov ecx, eax
test eax, eax
jns 0x401900
mov ecx, 0xffffffff
mov ebx, dword [esp + 4]
test bl, 3
mov dword [esp + 0xc], edx
je 0x40279b
lea edx, [ecx + ebx]
test eax, eax
je 0x402787
cmp byte [ebx], 0
je 0x402785
inc ebx
lea eax, [ecx - 1]
test bl, 3
je 0x402799
test eax, eax
je 0x40198c
cmp byte [ebx], 0
je 0x40198a
mov eax, dword [esp + 4]
lea ebx, [eax + 2]
lea eax, [ecx - 2]
test bl, 3
je 0x402799
test eax, eax
je 0x40198c
cmp byte [ebx], 0
je 0x40198a
mov eax, dword [esp + 4]
lea ebx, [eax + 3]
lea eax, [ecx - 3]
test bl, 3
je 0x402799
test eax, eax
je 0x40198c
cmp byte [ebx], 0
je 0x40198a
mov eax, dword [esp + 4]
lea ebx, [eax + 4]
add ecx, 0xfffffffc
test bl, 3
je 0x40279b
test ecx, ecx
je 0x40198c
mov edx, ebx
mov ebx, dword [esp + 4]
jmp 0x402787
mov eax, dword [esp + 4]
mov byte [esp + 0x25b], al
mov dword [esp + 0x24], 1
mov byte [esp + 0x3c], 0
mov byte [esp + 0x34], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x14], 0
lea eax, [esp + 0x25b]
mov dword [esp + 4], eax
xor edx, edx
mov dword [esp + 8], 0
xor ebx, ebx
mov dword [esp + 0x44], 0
jmp 0x402976
mov ecx, dword [esp + 0x28]
movzx eax, byte [ecx]
add ecx, 4
mov dword [esp + 0x28], ecx
mov byte [esp + 0x25b], al
mov dword [esp + 0x24], 1
mov byte [esp + 0x3c], 0
mov byte [esp + 0x34], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x14], 0
lea eax, [esp + 0x25b]
mov dword [esp + 4], eax
jmp 0x40282f
mov eax, dword [esp + 0x28]
fld qword [eax]
add eax, 8
mov dword [esp + 0x28], eax
jmp 0x401c49
mov edx, dword [esp + 0x28]
mov eax, dword [edx]
mov ecx, edi
sub ecx, ebx
add ecx, esi
mov dword [eax], ecx
add edx, 4
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x48]
inc eax
jmp 0x40103f
cmp byte [ecx + 2], 0x32
mov ebx, dword [esp + 0x18]
je 0x401f32
mov ecx, eax
jmp 0x401322
mov dword [esp + 0x48], eax
mov eax, edi
mov edi, dword [esp + 0x1c]
jmp 0x401329
mov dword [esp + 0x24], 0
mov dword [esp + 0x14], 0
lea eax, [esp + 0x25c]
mov dword [esp + 4], eax
mov dword [esp + 8], 0
xor ebx, ebx
mov edx, dword [esp + 0xc]
jmp 0x402976
mov ecx, edi
or ecx, eax
mov ecx, 0
je 0x401ac0
mov ecx, 0xfffffc02
mov dword [esp + 0x20], ecx
mov dword [esp + 0x30], ecx
mov dword [esp + 0xc], edx
shld eax, edi, 8
shl edi, 8
mov ecx, dword [esp + 0x2c]
cmp ecx, 0xe
mov dword [esp + 0x14], esi
jg 0x401b18
mov edx, ecx
or edx, 4
mov esi, ecx
and esi, 4
imul edx, esi
xor esi, 4
and ecx, 0xfb
imul ecx, esi
add ecx, edx
xor edx, edx
mov esi, 0x8000000
shrd edx, esi, cl
shr esi, cl
test cl, 0x20
je 0x401b10
mov edx, esi
xor esi, esi
add edi, edx
adc eax, esi
mov esi, dword [esp + 0x14]
movzx ecx, bl
lea edx, [esp + 0x3c]
mov word [ecx + edx + 1], 0x7830
or bl, 2
mov byte [esp + 0x3c], bl
mov ecx, eax
shr ecx, 0x1c
movzx ecx, byte [esi + ecx]
mov byte [esp + 0x9c], cl
cmp dword [esp + 0x2c], 0
je 0x401bd5
movzx ecx, byte [section..data]
mov edx, ecx
add dl, cl
and dl, 0x4e
sub cl, dl
add cl, 0x27
mov byte [esp + 0x9d], cl
lea ecx, [esp + 0x9e]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x2c]
mov ebx, ecx
cmp ecx, 0xd
jb 0x401b7d
mov ebx, 0xd
mov edx, ecx
sub edx, ebx
jg 0x401b85
xor edx, edx
mov dword [esp + 8], edx
mov esi, ebx
and esi, 3
mov dword [esp], ebx
je 0x401f3a
xor edx, edx
mov ecx, dword [esp + 0x14]
nop
nop
nop
mov ebx, eax
shr ebx, 0x18
and ebx, 0xf
movzx ebx, byte [ecx + ebx]
shld eax, edi, 4
mov byte [esp + edx + 0x9e], bl
shl edi, 4
inc edx
cmp esi, edx
jne 0x401ba0
lea esi, [esp + 0x9e]
lea ebx, [esi + edx]
sub dword [esp], edx
mov ecx, dword [esp + 0x2c]
jmp 0x401f41
lea ebx, [esp + 0x9d]
mov dword [esp + 0x10], ebx
mov dword [esp + 8], 0
mov edi, ebx
jmp 0x401fab
mov dword [esp + 8], 0
mov eax, edx
xor eax, 0xfffffeff
mov ecx, edx
or ecx, 0x100
test ecx, eax
je 0x401c9c
mov eax, 1
mov ecx, dword [esp + 0x20]
cmp ecx, 0xffffffff
je 0x401c1e
mov eax, ecx
mov dword [esp + 0x20], 0
cmp esi, 0x400
mov ecx, dword [esp + 8]
sbb ecx, 0
jb 0x401c39
mov dword [esp + 0x20], eax
mov dword [esp + 0x50], esi
mov eax, dword [esp + 8]
mov dword [esp + 0x54], eax
fild qword [esp + 0x50]
test edx, 0x100
je 0x40234c
xor eax, eax
test edx, 0x800
sete al
fld qword [eax*8 + 0x44d550]
cmp edx, 0x3ffffff
ja 0x401ec1
fld st(0)
fchs
fxch st(1)
fucom st(2)
fnstsw ax
sahf
jbe 0x4022d2
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
jbe 0x4022d2
fstp st(0)
fstp st(0)
jmp 0x40234c
movzx ecx, byte [0x450001]
mov eax, ecx
xor al, 0xa7
mov byte [esp + 0x14], al
mov eax, ecx
add al, cl
and al, 0x4e
sub cl, al
add cl, 0xa7
mov byte [esp + 4], cl
mov edi, 0x200
xor ebx, ebx
mov dword [esp + 0xc], edx
mov ecx, dword [esp + 8]
nop
nop
nop
nop
nop
nop
nop
cmp esi, 0x5f5e100
mov eax, ecx
sbb eax, 0
jb 0x401d10
push 0
push 0x5f5e100
push ecx
push esi
call fcn.0040c510
mov dword [esp + 8], edx
mov ecx, esi
imul edx, eax, 0x5f5e100
sub ecx, edx
mov edx, dword [esp + 0xc]
mov esi, eax
jmp 0x401d1c
mov dword [esp + 8], 0
mov ecx, esi
xor esi, esi
lea eax, [esp + 0x54]
add eax, edi
mov dword [esp], eax
test dl, 0x40
jne 0x401df3
mov dword [esp + 0x2c], esi
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 esi, ecx
sub esi, eax
movzx eax, word [esi + esi + str.00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
mov word [esp + edi + 0x5a], ax
add edi, 0xfffffffe
cmp ecx, 0x64
mov ecx, edx
jae 0x401d40
mov edx, dword [esp + 0xc]
mov esi, dword [esp + 0x2c]
mov eax, esi
mov ecx, dword [esp + 8]
or eax, ecx
jne 0x401d97
jmp 0x401e1d
inc ebx
mov byte [esp + edi + 0x5b], 0x30
dec edi
lea eax, [esp + edi]
add eax, 0x5c
cmp eax, dword [esp]
je 0x401cd0
test dl, 0x40
je 0x401d91
cmp ebx, 3
jne 0x401d90
movzx eax, byte [esp + 4]
mov byte [esp + edi + 0x5b], al
dec edi
dec dword [esp]
xor ebx, ebx
jmp 0x401d97
inc ebx
mov eax, ecx
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 + edi + 0x5b], cl
dec edi
mov ecx, edx
mov edx, dword [esp + 0xc]
test ecx, ecx
je 0x401d72
test dl, 0x40
je 0x401dd1
cmp ebx, 3
jne 0x401dd0
movzx eax, byte [esp + 0x14]
mov byte [esp + edi + 0x5b], al
dec edi
dec dword [esp]
xor ebx, ebx
test ecx, ecx
jne 0x401dfb
jmp 0x401d72
cmp byte [esp + edi + 0x5c], 0x30
sete al
cmp edi, 0x200
setne cl
mov byte [esp + 0x34], 0
mov byte [esp + 0x3c], 0
mov ebx, edx
mov dl, 0x2d
test bl, bl
js 0x401e52
mov dl, 0x20
test byte [esp + 0xc], 4
jne 0x401e52
mov dl, 0x2b
test byte [esp + 0xc], 2
je 0x401e5b
mov byte [esp + 0x3c], 1
mov byte [esp + 0x3d], dl
and cl, al
movzx eax, cl
add edi, eax
lea ecx, [esp + edi]
add ecx, 0x5c
lea eax, [edi - 0x200]
neg eax
mov dword [esp + 0x24], eax
cmp edi, 0x200
mov ebx, dword [esp + 0x20]
jne 0x401e92
mov byte [ecx - 1], 0x30
dec ecx
mov dword [esp + 0x24], 1
mov eax, 1
mov edx, dword [esp + 0xc]
mov dword [esp + 4], ecx
mov dword [esp + 8], 0
test ebx, ebx
jg 0x401ea8
xor ebx, ebx
mov ecx, eax
xor ecx, 0x3000000
and eax, 0x3000000
lea eax, [ecx + eax*2]
mov dword [esp + 0x14], eax
jmp 0x402976
fstp st(0)
jmp 0x40234c
mov eax, ecx
add dword [esp + 0x28], 8
mov ecx, dword [esp + 8]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x30]
cmp ecx, 0xfffffffd
mov edx, dword [esp + 0xc]
jl 0x401f07
cmp ecx, edi
jg 0x401f07
test ecx, ecx
jle 0x4022bd
sub dword [esp + 8], ecx
jg 0x402398
mov dword [esp + 8], 0
jmp 0x402398
mov ebx, dword [esp + 8]
cmp eax, ebx
jle 0x401f15
dec ebx
jmp 0x4013fb
xor ebx, ebx
sub eax, 1
jb 0x4013fb
mov ebx, eax
jmp 0x4013fb
mov ecx, eax
mov edi, dword [esp + 0x1c]
jmp 0x401322
add ecx, 3
jmp 0x401322
lea ebx, [esp + 0x9e]
cmp ecx, 4
jb 0x401fa4
mov esi, eax
mov ecx, dword [esp]
nop
nop
nop
nop
nop
mov dword [esp], ecx
mov edx, eax
shr edx, 0x18
and edx, 0xf
mov ecx, dword [esp + 0x14]
movzx edx, byte [ecx + edx]
mov byte [ebx], dl
mov edx, eax
shr edx, 0x14
and edx, 0xf
movzx edx, byte [ecx + edx]
mov byte [ebx + 1], dl
mov edx, eax
shr edx, 0x10
and edx, 0xf
movzx edx, byte [ecx + edx]
mov byte [ebx + 2], dl
shld esi, edi, 0x10
shl edi, 0x10
shr eax, 0xc
and eax, 0xf
movzx eax, byte [ecx + eax]
mov ecx, dword [esp]
mov byte [ebx + 3], al
add ebx, 4
mov eax, esi
add ecx, 0xfffffffc
jne 0x401f50
lea edi, [esp + 0x9e]
cmp byte [esp + 4], 0x41
setne al
shl al, 5
or al, 0x50
mov byte [esp + 0x35], al
mov eax, dword [esp + 0x20]
test eax, eax
js 0x401fea
mov byte [esp + 0x36], 0x2b
cmp eax, 0x3e7
ja 0x401ff8
cmp eax, 0x63
jbe 0x40210d
mov dword [esp + 0x2c], ebx
mov dword [esp + 4], edi
mov dword [esp], 5
jmp 0x402007
mov byte [esp + 0x36], 0x2d
neg eax
cmp eax, 0x3e7
jbe 0x401fd0
mov dword [esp + 0x2c], ebx
mov dword [esp + 4], edi
mov dword [esp], 6
mov dword [esp + 0x14], 0
mov dword [esp + 0x20], eax
mov ecx, 0xcccccccd
mul ecx
shr edx, 2
and edx, 0xfffffffe
lea esi, [edx + edx*4]
mov eax, dword [esp + 0x20]
mov edi, 0x66666667
imul edi
mov ecx, edx
mov eax, edx
shr eax, 0x1f
sar ecx, 2
add ecx, eax
mov eax, ecx
imul edi
mov ebx, dword [esp + 0x20]
sub ebx, esi
mov esi, dword [esp]
mov eax, esi
mov byte [esp + 0x34], al
or bl, 0x30
mov byte [esp + esi + 0x34], bl
mov eax, edx
shr eax, 0x1f
sar edx, 2
add edx, eax
add edx, edx
lea eax, [edx + edx*4]
sub ecx, eax
add cl, 0x30
mov byte [esp + esi + 0x33], cl
mov eax, dword [esp + 0x20]
cmp byte [esp + 0x14], 0
mov edi, dword [esp + 4]
mov ebx, dword [esp + 0x2c]
jne 0x4026d2
mov ecx, 0x51eb851f
imul ecx
mov ecx, edx
mov eax, edx
shr eax, 0x1f
sar ecx, 5
add ecx, eax
mov eax, ecx
mov edx, 0x66666667
imul edx
mov eax, edx
shr eax, 0x1f
sar edx, 2
add edx, eax
add edx, edx
lea eax, [edx + edx*4]
sub ecx, eax
add cl, 0x30
lea eax, [esp + 0x34]
mov edx, dword [esp]
mov byte [edx + eax - 2], cl
mov eax, dword [esp + 0x20]
cmp eax, 0x3e8
jb 0x4026d2
mov ecx, 0x10624dd3
imul ecx
mov ecx, edx
mov eax, edx
shr eax, 0x1f
sar ecx, 6
add ecx, eax
mov eax, ecx
mov edx, 0x66666667
imul edx
mov eax, edx
shr eax, 0x1f
shr edx, 2
add edx, eax
add edx, edx
lea eax, [edx + edx*4]
sub ecx, eax
add cl, 0x30
lea eax, [esp + 0x34]
mov edx, dword [esp]
mov byte [edx + eax - 3], cl
jmp 0x4026d2
cmp eax, 9
jbe 0x4026c7
mov dword [esp + 0x2c], ebx
mov dword [esp + 4], edi
mov dword [esp], 4
mov cl, 1
mov dword [esp + 0x14], ecx
jmp 0x40200f
mov ecx, ebx
and ecx, 0xfffffff8
xor edx, edx
mov edi, dword [esp + 4]
mov esi, eax
nop
nop
nop
movzx eax, byte [edi + edx + 1]
mov byte [esi + edx], al
movzx eax, byte [edi + edx + 2]
mov byte [esi + edx + 1], al
movzx eax, byte [edi + edx + 3]
mov byte [esi + edx + 2], al
movzx eax, byte [edi + edx + 4]
mov byte [esi + edx + 3], al
movzx eax, byte [edi + edx + 5]
mov byte [esi + edx + 4], al
movzx eax, byte [edi + edx + 6]
mov byte [esi + edx + 5], al
movzx eax, byte [edi + edx + 7]
mov byte [esi + edx + 6], al
movzx eax, byte [edi + edx + 8]
mov byte [esi + edx + 7], al
add edx, 8
cmp ecx, edx
jne 0x402140
add esi, edx
inc edx
mov ecx, dword [esp]
and ebx, 7
je 0x4021c3
mov ecx, esi
mov esi, dword [esp + 4]
add esi, edx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esi + edx]
mov byte [ecx + edx], al
inc edx
cmp ebx, edx
jne 0x4021b0
add ecx, edx
mov esi, ecx
mov ecx, dword [esp]
mov eax, dword [esp + 0x2c]
movzx eax, byte [eax + 0xe]
mov byte [esp + 0x35], al
test ecx, ecx
mov dword [esp], esi
jle 0x4021e0
dec ecx
mov byte [esp + 0x36], 0x2b
mov edi, ecx
jmp 0x4021ec
mov byte [esp + 0x36], 0x2d
mov edi, 1
sub edi, ecx
cmp edi, 0x64
mov esi, 4
sbb esi, 0xffffffff
mov eax, edi
mov ecx, 0xcccccccd
mul ecx
shr edx, 2
and edx, 0xfffffffe
lea eax, [edx + edx*4]
mov dword [esp + 4], eax
mov ebx, edi
mov eax, edi
mov ecx, 0x66666667
imul ecx
mov ecx, edx
mov eax, edx
shr eax, 0x1f
sar ecx, 2
add ecx, eax
mov eax, ecx
mov edx, 0x66666667
imul edx
sub ebx, dword [esp + 4]
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, esi
mov byte [esp + 0x34], dl
mov byte [esp + esi + 0x34], bl
add al, 0x30
mov byte [esp + esi + 0x33], al
cmp edi, 0x64
jb 0x402298
mov eax, edi
mov ecx, 0x51eb851f
imul ecx
mov ecx, edx
mov eax, edx
shr eax, 0x1f
sar ecx, 5
add ecx, eax
mov eax, ecx
mov edx, 0x66666667
imul edx
mov eax, edx
shr eax, 0x1f
shr edx, 2
add edx, eax
add edx, edx
lea eax, [edx + edx*4]
mov edx, ecx
sub edx, eax
add dl, 0x30
lea eax, [esp + 0x34]
mov byte [esi + eax - 2], dl
mov eax, dword [esp + 8]
sub eax, dword [esp + 0x14]
inc eax
mov dword [esp + 8], eax
mov dword [esp + 0x30], ecx
mov dword [esp + 0x14], 0x3000001
mov edx, dword [esp + 0xc]
mov esi, dword [esp]
jmp 0x402963
mov esi, dword [esp + 8]
cmp eax, esi
jl 0x4022c7
mov eax, esi
sub eax, ecx
mov dword [esp + 8], eax
jmp 0x402398
fdiv st(2), st(0)
lea ecx, [edx + 0x1000000]
cmp edx, 0x2ffffff
ja 0x402346
fucom st(2)
fnstsw ax
sahf
jbe 0x4022f4
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
ja 0x402346
fdiv st(2), st(0)
lea ecx, [edx + 0x2000000]
cmp edx, 0x1ffffff
ja 0x402346
fucom st(2)
fnstsw ax
sahf
jbe 0x402316
fxch st(2)
fucom st(1)
fnstsw ax
sahf
fxch st(2)
ja 0x402346
fdiv st(2), st(0)
lea ecx, [edx + 0x3000000]
cmp edx, 0xffffff
ja 0x402346
fucom st(2)
fnstsw ax
sahf
jbe 0x40288f
fxch st(2)
fucom st(1)
fstp st(1)
fnstsw ax
sahf
fldz
fxch st(1)
fxch st(2)
jbe 0x40288f
fstp st(0)
fstp st(0)
mov edx, ecx
mov esi, edx
mov ecx, 6
mov eax, dword [esp + 0x20]
cmp eax, 0xffffffff
je 0x40235e
mov ecx, eax
sub esp, 0x18
fstp qword [esp + 8]
lea eax, [esp + 0x48]
mov dword [esp + 4], eax
lea eax, [esp + 0x74]
mov dword [esp], eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x10], ecx
lea ecx, [esp + 0x28]
lea edx, [esp + 0x3c]
call fcn.00403710
add esp, 0x18
mov edx, esi
test eax, eax
je 0x402398
or edx, 0x80
mov byte [esp + 0x34], 0
mov byte [esp + 0x3c], 0
mov al, 0x2d
test dl, dl
js 0x4023b6
mov al, 0x20
test dl, 4
jne 0x4023b6
mov al, 0x2b
test dl, 2
je 0x4023bf
mov byte [esp + 0x3c], 1
mov byte [esp + 0x3d], al
mov esi, dword [esp + 0x30]
cmp esi, 0x7000
jne 0x4023e0
mov dword [esp + 0x14], 0
mov eax, dword [esp + 0x10]
mov dword [esp + 4], eax
jmp 0x40282f
test esi, esi
mov dword [esp + 0xc], edx
jle 0x40247c
xor ecx, ecx
test dl, 0x40
je 0x40240a
mov ecx, 0x258
sub ecx, esi
mov eax, ecx
mov edx, 0xaaaaaaab
mul edx
shr edx, 1
lea eax, [edx + edx*2]
sub ecx, eax
cmp esi, dword [esp + 0x24]
jae 0x40253f
xor eax, eax
lea edx, [esp + 0x9c]
mov dword [esp + 0x14], edx
jmp 0x402452
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
movzx edx, byte [edx + eax]
lea edi, [esi + 1]
mov dword [esp + 0x14], edi
mov byte [esi], dl
inc eax
mov edx, dword [esp + 0x30]
cmp eax, edx
jae 0x40258d
mov edx, dword [esp + 0xc]
test dl, 0x40
je 0x402430
inc ecx
cmp ecx, 4
jne 0x402430
mov ecx, edx
and ecx, 0x40
shr ecx, 6
movzx edx, byte [0x450001]
xor dl, 0xa7
mov esi, dword [esp + 0x14]
mov byte [esi], dl
inc esi
jmp 0x402434
mov byte [esp + 0x9c], 0x30
lea edx, [esp + 0x9d]
mov ecx, dword [esp + 8]
test ecx, ecx
je 0x4024aa
movzx eax, byte [section..data]
xor al, 0x27
mov byte [esp + 0x9d], al
lea edx, [esp + 0x9e]
neg esi
mov ebx, ecx
cmp ecx, esi
jl 0x4024b4
mov ebx, esi
test ebx, ebx
mov dword [esp + 4], ebx
je 0x4024ea
mov eax, edx
and eax, 3
je 0x4024ea
mov ecx, edx
mov esi, edx
not esi
and esi, 3
dec ebx
cmp esi, ebx
jb 0x4024d3
mov esi, ebx
lea eax, [esi + 1]
push eax
push 0x30
mov edi, edx
push edx
call fcn.0040c600
add esp, 0xc
lea edx, [esi + edi]
inc edx
sub ebx, esi
cmp ebx, 4
jl 0x402522
mov eax, ebx
cmp ebx, 7
jl 0x4024fb
mov eax, 7
neg eax
lea esi, [ebx + eax]
add esi, 3
and esi, 0xfffffffc
lea eax, [esi + 4]
push eax
push 0x30
mov edi, edx
push edx
call fcn.0040c600
add esp, 0xc
lea edx, [esi + edi]
add edx, 4
sub ebx, esi
add ebx, 0xfffffffc
test ebx, ebx
je 0x402652
push ebx
push 0x30
mov esi, edx
push edx
call fcn.0040c600
add esp, 0xc
add esi, ebx
jmp 0x402654
xor edx, edx
lea esi, [esp + 0x9c]
jmp 0x402568
mov edi, esi
mov eax, dword [esp + 0x10]
movzx eax, byte [eax + edx]
inc esi
mov byte [edi], al
inc edx
cmp edx, dword [esp + 0x24]
jae 0x40262a
test byte [esp + 0xc], 0x40
je 0x402550
inc ecx
cmp ecx, 4
jne 0x402550
mov ecx, dword [esp + 0xc]
and ecx, 0x40
shr ecx, 6
movzx eax, byte [0x450001]
xor al, 0xa7
mov byte [esi], al
inc esi
jmp 0x402550
mov ecx, dword [esp + 0x14]
mov dword [esp], ecx
cmp dword [esp + 8], 0
je 0x4025b2
movzx ecx, byte [section..data]
xor cl, 0x27
mov byte [esi + 1], cl
add esi, 2
mov edx, dword [esp + 0x30]
mov dword [esp], esi
mov ecx, dword [esp + 0x24]
mov esi, ecx
not esi
and esi, edx
mov edi, edx
not edi
and edi, ecx
sub edi, esi
cmp edi, dword [esp + 8]
jbe 0x4025d4
mov ecx, dword [esp + 8]
add ecx, edx
mov dword [esp + 0x24], ecx
cmp eax, ecx
mov esi, dword [esp]
jae 0x4025fb
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x10]
movzx ecx, byte [ecx + eax]
mov byte [esi], cl
inc eax
inc esi
mov ecx, dword [esp + 0x24]
cmp eax, ecx
jb 0x4025e0
mov dword [esp], esi
mov edx, dword [esp + 0x30]
lea eax, [esp + 0x9c]
mov esi, dword [esp + 0x14]
sub esi, eax
add esi, 0x3000000
mov dword [esp + 0x14], esi
mov eax, dword [esp + 8]
sub eax, ecx
add eax, edx
mov dword [esp + 8], eax
mov edx, dword [esp + 0xc]
mov esi, dword [esp]
jmp 0x4028d4
mov dword [esp], esi
mov eax, dword [esp + 0x30]
mov esi, eax
sub esi, edx
jbe 0x40264a
test byte [esp + 0xc], 0x40
jne 0x40277b
cmp eax, edx
jne 0x40283e
mov esi, dword [esp]
jmp 0x40289e
mov esi, edx
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 4]
lea ecx, [edx + eax]
cmp ecx, dword [esp + 8]
jle 0x402671
mov edx, dword [esp + 8]
sub edx, dword [esp + 4]
mov dword [esp + 0x24], edx
test edx, edx
mov dword [esp + 0x14], edx
je 0x402762
mov dword [esp], esi
mov esi, dword [esp + 8]
mov eax, esi
cmp esi, ecx
jl 0x40268c
mov eax, ecx
mov ecx, edx
and ecx, 3
je 0x402703
mov dword [esp + 0x20], eax
xor esi, esi
mov eax, dword [esp]
nop
nop
nop
nop
mov ebx, dword [esp + 0x10]
lea edx, [ebx + 1]
mov dword [esp + 0x10], edx
movzx edx, byte [ebx]
mov byte [eax + esi], dl
inc esi
cmp ecx, esi
jne 0x4026a0
add eax, esi
mov dword [esp], eax
mov ecx, dword [esp + 0x14]
sub ecx, esi
mov eax, dword [esp + 0x20]
jmp 0x402705
mov byte [esp + 0x34], 3
or al, 0x30
mov byte [esp + 0x37], al
add dword [esp + 0x28], 8
mov eax, ebx
sub eax, edi
mov dword [esp + 0x30], eax
lea eax, [esp + 0x9c]
sub ebx, eax
mov dword [esp + 0x24], ebx
xor ebx, ebx
mov dword [esp + 0x14], 0x3000001
mov dword [esp + 4], eax
mov edx, dword [esp + 0xc]
jmp 0x402976
mov ecx, edx
mov edx, dword [esp + 4]
sub edx, eax
cmp edx, 0xfffffffc
mov esi, dword [esp]
ja 0x402762
mov edx, dword [esp + 0x10]
mov eax, esi
lea esi, [edx + 1]
mov dword [esp + 0x10], esi
movzx edx, byte [edx]
mov byte [eax], dl
mov edx, dword [esp + 0x10]
lea esi, [edx + 1]
mov dword [esp + 0x10], esi
movzx edx, byte [edx]
mov byte [eax + 1], dl
mov edx, dword [esp + 0x10]
lea esi, [edx + 1]
mov dword [esp + 0x10], esi
movzx edx, byte [edx]
mov byte [eax + 2], dl
mov edx, dword [esp + 0x10]
lea esi, [edx + 1]
mov dword [esp + 0x10], esi
mov esi, eax
movzx edx, byte [edx]
mov byte [eax + 3], dl
add esi, 4
add ecx, 0xfffffffc
jne 0x402713
mov eax, dword [esp + 4]
add eax, dword [esp + 0x14]
sub dword [esp + 8], eax
mov dword [esp + 0x14], 0x3000001
jmp 0x4028d0
mov eax, esi
mov esi, dword [esp]
jmp 0x40368d
mov edx, ebx
mov eax, edx
not eax
and eax, ebx
not ebx
and ebx, edx
sub ebx, eax
mov edx, dword [esp + 0xc]
jmp 0x40280c
mov ecx, eax
mov edx, ecx
mov dword [esp], ebx
mov edi, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, edx
cmp edx, 4
jb 0x4027e1
mov ebx, edi
mov esi, dword [edi]
mov edx, esi
not edx
mov edi, edx
and edi, 0x1010101
and esi, 0xfefefefe
sub esi, edi
and esi, edx
lea edi, [ebx + 4]
lea edx, [eax - 4]
test esi, 0x80808080
je 0x4027b0
jmp 0x4027e7
test eax, eax
mov ebx, edi
je 0x402804
add dword [esp], ecx
xor ecx, ecx
mov edx, dword [esp + 0xc]
cmp byte [ebx + ecx], 0
je 0x402800
inc ecx
cmp eax, ecx
jne 0x4027f0
mov ebx, dword [esp]
jmp 0x402808
add ebx, ecx
jmp 0x402808
mov edx, dword [esp + 0xc]
sub ebx, dword [esp + 4]
add dword [esp + 0x28], 4
mov dword [esp + 0x24], ebx
mov byte [esp + 0x3c], 0
mov byte [esp + 0x34], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x14], 0
mov dword [esp + 8], 0
xor ebx, ebx
jmp 0x402976
inc edi
mov esi, dword [esp]
mov dword [esp], esi
mov esi, edi
xor esi, 0xfffffffc
mov ebx, edi
or ebx, 3
test ebx, esi
je 0x402862
mov esi, dword [esp]
mov byte [esi], 0x30
inc esi
inc edi
dec eax
cmp edx, eax
jne 0x402842
jmp 0x40289e
sub eax, edx
cmp eax, 4
mov esi, dword [esp]
jb 0x403695
mov dword [esi], 0x30303030
add esi, 4
mov edx, eax
xor edx, 4
and eax, 0xfffffffb
add eax, eax
sub eax, edx
cmp eax, 3
ja 0x402870
jmp 0x40368d
fstp st(1)
fdivp st(1)
or edx, 0x4000000
jmp 0x40234c
mov ecx, esi
lea eax, [esp + 0x9c]
sub ecx, eax
add ecx, 0x3000000
mov dword [esp + 0x14], ecx
cmp dword [esp + 8], 0
je 0x4028c8
movzx eax, byte [section..data]
xor al, 0x27
mov byte [esi], al
inc esi
jmp 0x4028d0
mov dword [esp + 8], 0
mov edx, dword [esp + 0xc]
test edx, 0x100
je 0x402963
mov eax, edx
and eax, 0x400
sete byte [esp + 0x34]
sete cl
mov byte [esp + 0x35], 0x20
cmp edx, 0x1000000
jb 0x402963
mov dword [esp], esi
mov esi, edx
mov edx, str._kMGT
test esi, 0x800
je 0x402913
mov edx, str._KMGT
mov edi, dword [esp + 0xc]
mov ebx, edi
shr ebx, 0x18
movzx edx, byte [edx + ebx]
mov esi, edi
shl esi, 0x15
sar esi, 0x1f
lea ebx, [esp + 0x34]
mov byte [esi + ebx + 2], dl
mov edx, edi
shr eax, 9
or al, cl
mov ecx, edi
and ecx, 0x1800
cmp ecx, 0x800
jne 0x40295a
movzx ecx, al
mov eax, 4
sub eax, ecx
neg ecx
mov byte [esp + ecx + 0x38], 0x69
jmp 0x40295c
xor al, 3
mov esi, dword [esp]
mov byte [esp + 0x34], al
lea eax, [esp + 0x9c]
sub esi, eax
mov dword [esp + 0x24], esi
xor ebx, ebx
mov dword [esp + 4], eax
mov dword [esp + 0xc], edx
mov ecx, dword [esp + 0x24]
cmp ebx, ecx
jg 0x402984
mov ebx, ecx
movsx eax, byte [esp + 0x3c]
movsx esi, byte [esp + 0x34]
mov edx, dword [esp + 8]
mov dword [esp + 0x20], ebx
add edx, ebx
add edx, eax
add edx, esi
mov edi, dword [esp + 0x44]
cmp edi, edx
jg 0x4029a6
mov edi, edx
sub edi, edx
sub dword [esp + 0x20], ecx
mov edx, dword [esp + 0xc]
test dl, 1
jne 0x4029d7
mov ecx, edx
xor ecx, 0xffffffef
or edx, 0x10
test edx, ecx
mov esi, dword [esp + 0x4c]
je 0x4029dd
mov ecx, dword [esp + 0x20]
cmp edi, ecx
jg 0x4029cf
mov edi, ecx
mov dword [esp + 0x20], edi
xor edx, edx
jmp 0x4029e7
mov esi, dword [esp + 0x4c]
jmp 0x4029e5
mov dword [esp + 0xc], 0
mov edx, edi
mov ecx, edx
mov edi, dword [esp + 0x20]
xor ecx, edi
mov dword [esp + 0x44], edx
and edx, edi
add edx, edx
add edx, ecx
mov edi, dword [esp + 0x1c]
jne 0x402a0c
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 0x18]
jmp 0x402edf
test byte [esp + 0xc], 1
mov ebx, dword [esp + 0x18]
jne 0x402b65
mov ecx, dword [esp + 0x44]
test ecx, ecx
jg 0x402a42
jmp 0x402b65
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x44]
sub ecx, edx
test ecx, ecx
jle 0x402b5c
mov eax, ebx
sub eax, esi
add eax, 0x200
mov edx, ecx
cmp ecx, eax
jl 0x402a53
mov edx, eax
cmp dword [ebp + 8], 0
jne 0x402a5b
mov edx, ecx
test edx, edx
mov dword [esp], edx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x44], ecx
mov dword [esp + 0x1c], edi
je 0x402ad0
mov eax, esi
and eax, 3
je 0x402ad0
mov ecx, esi
not esi
and esi, 3
lea edi, [edx - 1]
cmp esi, edi
jb 0x402a85
mov esi, edi
lea eax, [esi + 1]
push eax
push 0x20
mov ebx, ecx
push ecx
call fcn.0040c600
add esp, 0xc
lea ecx, [esi + ebx]
inc ecx
sub edi, esi
mov ebx, dword [esp + 0x18]
mov edx, dword [esp]
cmp edi, 4
jge 0x402ad9
test edi, edi
je 0x402b17
push edi
push 0x20
mov esi, ecx
push ecx
call fcn.0040c600
mov edx, dword [esp + 0xc]
add esp, 0xc
add esi, edi
jmp 0x402b19
mov ecx, esi
mov edi, edx
cmp edi, 4
jl 0x402aa8
mov eax, edi
cmp edi, 7
jl 0x402ae5
mov eax, 7
neg eax
lea esi, [edi + eax]
add esi, 3
and esi, 0xfffffffc
lea eax, [esi + 4]
push eax
push 0x20
mov ebx, ecx
push ecx
call fcn.0040c600
add esp, 0xc
lea ecx, [esi + ebx]
add ecx, 4
sub edi, esi
add edi, 0xfffffffc
mov ebx, dword [esp + 0x18]
mov edx, dword [esp]
test edi, edi
jne 0x402aac
mov esi, ecx
mov edi, dword [ebp + 8]
test edi, edi
je 0x402a30
mov eax, esi
sub eax, ebx
lea ecx, [eax + 1]
cmp ecx, 0x200
mov edi, dword [esp + 0x1c]
jl 0x402a34
add edi, eax
push eax
push dword [ebp + 0xc]
push ebx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4036ee
mov esi, eax
mov ebx, eax
mov edx, dword [esp]
jmp 0x402a34
mov dword [esp + 0x44], ecx
movzx eax, byte [esp + 0x3c]
lea ecx, [esp + 0x3d]
mov dword [esp + 0x10], ecx
jmp 0x402b79
mov esi, eax
mov ebx, eax
movzx eax, byte [esp + 0x3c]
test al, al
je 0x402c9d
movsx edx, al
mov ecx, ebx
sub ecx, esi
add ecx, 0x200
cmp ecx, edx
jl 0x402b94
mov ecx, edx
cmp dword [ebp + 8], 0
jne 0x402b9c
mov ecx, edx
movzx eax, al
sub eax, ecx
mov byte [esp + 0x3c], al
test ecx, ecx
je 0x402c4b
mov eax, ecx
and eax, 3
je 0x402c90
mov dword [esp], ecx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x18], ebx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, esi
mov esi, dword [esp + 0x10]
lea edi, [esi + 1]
mov dword [esp + 0x10], edi
movzx ecx, byte [esi]
mov esi, ebx
mov byte [ebx + edx], cl
inc edx
cmp eax, edx
jne 0x402bd0
add esi, edx
mov ecx, dword [esp]
mov eax, ecx
sub eax, edx
mov ebx, dword [esp + 0x18]
mov edi, dword [esp + 0x1c]
cmp ecx, 4
jb 0x402c4b
mov ecx, dword [esp + 0x10]
lea edx, [ecx + 1]
mov dword [esp + 0x10], edx
movzx ecx, byte [ecx]
mov byte [esi], cl
mov ecx, dword [esp + 0x10]
lea edx, [ecx + 1]
mov dword [esp + 0x10], edx
movzx ecx, byte [ecx]
mov byte [esi + 1], cl
mov ecx, dword [esp + 0x10]
lea edx, [ecx + 1]
mov dword [esp + 0x10], edx
movzx ecx, byte [ecx]
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x10]
lea edx, [ecx + 1]
mov dword [esp + 0x10], edx
movzx ecx, byte [ecx]
mov byte [esi + 3], cl
add esi, 4
add eax, 0xfffffffc
jne 0x402c00
cmp dword [ebp + 8], 0
je 0x402b74
mov eax, esi
sub eax, ebx
mov ecx, eax
and ecx, 1
mov edx, eax
xor edx, 1
lea ecx, [edx + ecx*2]
cmp ecx, 0x200
jl 0x402b74
add edi, eax
push eax
push dword [ebp + 0xc]
push ebx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x402b70
jmp 0x4036ee
mov eax, ecx
cmp ecx, 4
jae 0x402c00
jmp 0x402c4b
mov dword [esp + 0x1c], edi
mov eax, dword [esp + 0x14]
mov ecx, eax
shr ecx, 0x18
mov dword [esp], ecx
xor edi, edi
mov edx, dword [esp + 0xc]
test dl, 0x40
je 0x402cd1
and eax, 0xffffff
add eax, dword [esp + 0x20]
mov edi, dword [esp]
lea ecx, [edi + 1]
xor edx, edx
div ecx
sub edi, edx
mov edx, dword [esp + 0xc]
cmp dword [esp + 0x20], 0
jle 0x403027
mov eax, dword [esp + 0x20]
jmp 0x402d08
mov esi, eax
mov ebx, eax
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 0x20]
sub eax, dword [esp + 0x14]
test eax, eax
jle 0x402ed6
mov dword [esp + 0x20], eax
mov dword [esp + 0x14], eax
cmp dword [ebp + 8], 0
mov dword [esp + 0x18], ebx
je 0x402d39
mov eax, ebx
sub eax, esi
add eax, 0x200
mov ebx, dword [esp + 0x20]
mov ecx, ebx
mov dword [esp + 0x14], ebx
cmp ebx, eax
jl 0x402d35
mov dword [esp + 0x14], eax
mov ebx, dword [esp + 0x18]
test dl, 0x40
jne 0x402d90
cmp dword [esp + 0x14], 0
je 0x402da0
mov eax, esi
and eax, 3
je 0x402da0
mov ecx, esi
not esi
and esi, 3
mov eax, dword [esp + 0x14]
dec eax
cmp esi, eax
jb 0x402d5e
mov esi, eax
mov dword [esp + 0x4c], eax
lea eax, [esi + 1]
push eax
push 0x30
mov ebx, ecx
push ecx
call fcn.0040c600
add esp, 0xc
add ebx, esi
inc ebx
mov ecx, dword [esp + 0x4c]
sub ecx, esi
mov esi, ebx
mov ebx, dword [esp + 0x18]
mov edx, dword [esp + 0xc]
cmp ecx, 4
jge 0x402da9
jmp 0x402df2
mov ecx, dword [esp + 0x14]
jmp 0x402df2
mov ecx, dword [esp + 0x14]
cmp ecx, 4
jl 0x402df2
mov edx, ecx
mov ecx, esi
mov eax, edx
mov esi, edx
cmp edx, 7
jl 0x402dbb
mov eax, 7
neg eax
mov dword [esp + 0x4c], esi
add esi, eax
add esi, 3
and esi, 0xfffffffc
lea eax, [esi + 4]
push eax
push 0x30
mov ebx, ecx
push ecx
call fcn.0040c600
mov ecx, dword [esp + 0x58]
add esp, 0xc
add ebx, esi
add ebx, 4
sub ecx, esi
mov esi, ebx
add ecx, 0xfffffffc
mov ebx, dword [esp + 0x18]
mov edx, dword [esp + 0xc]
test ecx, ecx
je 0x402e40
test cl, 1
jne 0x402e10
mov eax, ecx
cmp ecx, 1
jne 0x402e97
jmp 0x402e40
mov al, 0x30
test dl, 0x40
je 0x402e2a
cmp edi, dword [esp]
jne 0x402e29
movzx eax, byte [0x450001]
xor al, 0xa7
xor edi, edi
jmp 0x402e2a
inc edi
mov byte [esi], al
inc esi
lea eax, [ecx - 1]
cmp ecx, 1
jne 0x402e97
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [ebp + 8], 0
je 0x402cf8
mov eax, esi
sub eax, ebx
lea ecx, [eax + 1]
cmp ecx, 0x200
jl 0x402cf8
add dword [esp + 0x1c], eax
push eax
push dword [ebp + 0xc]
push ebx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
jne 0x402cf0
jmp 0x4036df
movzx ecx, byte [0x450001]
xor cl, 0xa7
xor edi, edi
mov byte [esi + 1], cl
add esi, 2
add eax, 0xfffffffe
je 0x402e40
mov cl, 0x30
test dl, 0x40
je 0x402ec1
cmp edi, dword [esp]
jne 0x402ec0
movzx edx, byte [0x450001]
xor dl, 0xa7
xor edi, edi
jmp 0x402ec3
inc edi
mov dl, 0x30
mov byte [esi], dl
mov edx, dword [esp + 0xc]
test dl, 0x40
je 0x402e8c
cmp edi, dword [esp]
je 0x402e80
inc edi
jmp 0x402e8c
movzx eax, byte [esp + 0x3c]
mov edi, dword [esp + 0x1c]
lea ecx, [esp + 0x3d]
mov dword [esp + 0x10], ecx
test al, al
jne 0x402f0d
mov dword [esp + 0x1c], edi
jmp 0x40302f
movzx eax, byte [esp + 0x3c]
test al, al
je 0x40301d
movsx edx, al
mov ecx, ebx
sub ecx, esi
add ecx, 0x200
cmp ecx, edx
jl 0x402f20
mov ecx, edx
cmp dword [ebp + 8], 0
jne 0x402f28
mov ecx, edx
sub al, cl
mov byte [esp + 0x3c], al
test ecx, ecx
je 0x402fcb
mov eax, ecx
and eax, 3
je 0x403010
mov dword [esp], ecx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x18], ebx
xor edx, edx
nop
nop
mov ebx, esi
mov esi, dword [esp + 0x10]
lea edi, [esi + 1]
mov dword [esp + 0x10], edi
movzx ecx, byte [esi]
mov esi, ebx
mov byte [ebx + edx], cl
inc edx
cmp eax, edx
jne 0x402f50
add esi, edx
mov ecx, dword [esp]
mov eax, ecx
sub eax, edx
mov ebx, dword [esp + 0x18]
mov edi, dword [esp + 0x1c]
cmp ecx, 4
jb 0x402fcb
mov ecx, dword [esp + 0x10]
lea edx, [ecx + 1]
mov dword [esp + 0x10], edx
movzx ecx, byte [ecx]
mov byte [esi], cl
mov ecx, dword [esp + 0x10]
lea edx, [ecx + 1]
mov dword [esp + 0x10], edx
movzx ecx, byte [ecx]
mov byte [esi + 1], cl
mov ecx, dword [esp + 0x10]
lea edx, [ecx + 1]
mov dword [esp + 0x10], edx
movzx ecx, byte [ecx]
mov byte [esi + 2], cl
mov ecx, dword [esp + 0x10]
lea edx, [ecx + 1]
mov dword [esp + 0x10], edx
movzx ecx, byte [ecx]
mov byte [esi + 3], cl
add esi, 4
add eax, 0xfffffffc
jne 0x402f80
cmp dword [ebp + 8], 0
je 0x402f00
mov eax, esi
sub eax, ebx
lea ecx, [eax + 1]
cmp ecx, 0x200
jl 0x402f00
add edi, eax
push eax
push dword [ebp + 0xc]
push ebx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4036ee
mov esi, eax
mov ebx, eax
jmp 0x402f00
mov eax, ecx
cmp ecx, 4
jae 0x402f80
jmp 0x402fcb
mov dword [esp + 0x1c], edi
mov edx, dword [esp + 0xc]
jmp 0x40302f
lea eax, [esp + 0x3d]
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x24]
test ecx, ecx
jne 0x403331
mov dword [esp + 0x18], ebx
mov ecx, dword [esp + 8]
test ecx, ecx
mov edi, dword [esp + 0x1c]
jne 0x4031c2
lea eax, [esp + 0x35]
mov dword [esp + 0x10], eax
movzx ecx, byte [esp + 0x34]
test cl, cl
je 0x40350d
mov ebx, dword [esp + 0x18]
jmp 0x403085
mov edx, dword [esp + 0xc]
movzx ecx, byte [esp + 0x34]
test cl, cl
mov eax, dword [esp + 0x48]
je 0x403515
movsx edx, cl
mov eax, ebx
sub eax, esi
add eax, 0x200
cmp eax, edx
jl 0x403097
mov eax, edx
cmp dword [ebp + 8], 0
jne 0x40309f
mov eax, edx
sub cl, al
mov byte [esp + 0x34], cl
test eax, eax
je 0x40315b
mov ecx, eax
and ecx, 3
je 0x4031a0
mov dword [esp], eax
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], edi
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, esi
mov esi, dword [esp + 0x10]
lea edi, [esi + 1]
mov dword [esp + 0x10], edi
movzx ebx, byte [esi]
mov esi, eax
mov byte [eax + edx], bl
inc edx
cmp ecx, edx
jne 0x4030d0
add esi, edx
mov ebx, dword [esp]
mov ecx, ebx
sub ecx, edx
mov edi, dword [esp + 0x1c]
mov eax, ebx
mov ebx, dword [esp + 0x18]
cmp eax, 4
jb 0x40315b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x10]
lea edx, [eax + 1]
mov dword [esp + 0x10], edx
movzx eax, byte [eax]
mov byte [esi], al
mov eax, dword [esp + 0x10]
lea edx, [eax + 1]
mov dword [esp + 0x10], edx
movzx eax, byte [eax]
mov byte [esi + 1], al
mov eax, dword [esp + 0x10]
lea edx, [eax + 1]
mov dword [esp + 0x10], edx
movzx eax, byte [eax]
mov byte [esi + 2], al
mov eax, dword [esp + 0x10]
lea edx, [eax + 1]
mov dword [esp + 0x10], edx
movzx eax, byte [eax]
mov byte [esi + 3], al
add esi, 4
add ecx, 0xfffffffc
jne 0x403110
cmp dword [ebp + 8], 0
je 0x403070
mov eax, esi
sub eax, ebx
cmp eax, 0x1ff
jl 0x403070
add edi, eax
push eax
push dword [ebp + 0xc]
push ebx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4036ee
mov esi, eax
mov ebx, eax
jmp 0x403070
mov ecx, eax
cmp eax, 4
jae 0x403110
jmp 0x40315b
mov dword [esp + 0x18], ebx
mov ecx, dword [esp + 8]
sub ecx, dword [esp + 4]
je 0x40304f
mov ebx, edi
mov eax, dword [esp + 0x18]
sub eax, esi
add eax, 0x200
mov edi, ecx
mov dword [esp + 8], ecx
cmp ecx, eax
jl 0x4031db
mov edi, eax
mov dword [esp + 0x1c], ebx
cmp dword [ebp + 8], 0
jne 0x4031e9
mov edi, dword [esp + 8]
test edi, edi
mov dword [esp + 4], edi
mov ebx, dword [esp + 0x18]
je 0x4032d3
lea eax, [edi + 3]
xor ebx, ebx
mov edx, esi
mov esi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov dword [esp], eax
mov edi, edx
lea eax, [edx + ebx]
mov edx, eax
or edx, 3
mov ecx, eax
xor ecx, 0xfffffffc
test edx, ecx
je 0x403260
mov edx, edi
mov byte [edi + ebx], 0x30
dec esi
inc ebx
mov eax, dword [esp]
dec eax
cmp dword [esp + 4], ebx
jne 0x403210
add edx, ebx
mov edi, dword [esp + 0x1c]
mov esi, edx
mov ebx, dword [esp + 0x18]
mov edx, dword [esp + 0xc]
cmp dword [ebp + 8], 0
jne 0x4032e1
jmp 0x4031b0
mov ecx, eax
mov dword [esp + 0x4c], edi
mov eax, dword [esp + 4]
mov edi, eax
sub edi, ebx
cmp edi, 4
jl 0x4032b7
cmp esi, 7
jl 0x40327d
mov esi, 7
sub eax, esi
sub eax, ebx
add eax, 3
and eax, 0xfffffffc
add eax, 4
push eax
push 0x30
push ecx
call fcn.0040c600
add esp, 0xc
mov ecx, dword [esp]
sub ecx, esi
and ecx, 0xfffffffc
mov eax, dword [esp + 0x4c]
add eax, ecx
lea esi, [ebx + eax]
add esi, 4
mov edi, dword [esp + 4]
sub edi, ecx
sub edi, ebx
add edi, 0xfffffffc
jmp 0x4032b9
mov esi, ecx
test edi, edi
mov ebx, dword [esp + 0x18]
je 0x4032cf
push edi
push 0x30
push esi
call fcn.0040c600
add esp, 0xc
add esi, edi
mov edx, dword [esp + 0xc]
mov edi, dword [esp + 0x1c]
cmp dword [ebp + 8], 0
je 0x4031b0
mov eax, esi
sub eax, ebx
cmp eax, 0x1ff
jl 0x4031b0
add edi, eax
push eax
push dword [ebp + 0xc]
push ebx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x4036ee
mov esi, eax
mov dword [esp + 0x18], eax
mov edx, dword [esp + 0xc]
jmp 0x4031b4
mov ebx, edi
mov ecx, dword [esp + 0x14]
mov eax, dword [esp]
sub ecx, eax
je 0x40303b
mov eax, ebx
sub eax, esi
add eax, 0x200
mov edi, ecx
cmp ecx, eax
jl 0x403342
mov edi, eax
cmp dword [ebp + 8], 0
jne 0x40334a
mov edi, ecx
cmp edi, 4
mov dword [esp + 0x14], ecx
mov dword [esp], edi
jl 0x4033b0
lea edx, [edi - 4]
mov eax, edx
shr eax, 2
inc eax
and eax, 7
je 0x4033ba
mov dword [esp + 0x20], edx
mov dword [esp + 0x18], ebx
shl eax, 2
mov ebx, esi
xor esi, esi
mov edx, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [edx + esi]
mov dword [ebx + esi], ecx
add esi, 4
cmp eax, esi
jne 0x403380
add ebx, esi
mov ecx, edi
sub ecx, esi
add edx, esi
mov dword [esp + 4], edx
mov eax, ecx
mov esi, ebx
mov edi, dword [esp + 0x18]
mov edx, dword [esp + 0x20]
jmp 0x4033be
mov eax, edi
mov edi, ebx
mov ebx, dword [esp + 4]
jmp 0x403411
mov ecx, edi
mov edi, ebx
cmp edx, 0x1c
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 4]
jb 0x403411
nop
nop
nop
nop
nop
mov eax, dword [ebx]
mov dword [esi], eax
mov eax, dword [ebx + 4]
mov dword [esi + 4], eax
mov eax, dword [ebx + 8]
mov dword [esi + 8], eax
mov eax, dword [ebx + 0xc]
mov dword [esi + 0xc], eax
mov eax, dword [ebx + 0x10]
mov dword [esi + 0x10], eax
mov eax, dword [ebx + 0x14]
mov dword [esi + 0x14], eax
mov eax, dword [ebx + 0x18]
mov dword [esi + 0x18], eax
mov eax, dword [ebx + 0x1c]
mov dword [esi + 0x1c], eax
add esi, 0x20
add ebx, 0x20
lea eax, [ecx - 0x20]
add ecx, 0xffffffdc
cmp ecx, 0xfffffff8
mov ecx, eax
jb 0x4033d0
test eax, eax
je 0x4034a1
mov ecx, eax
and ecx, 7
je 0x403500
mov dword [esp + 0x18], edi
xor edx, edx
mov edi, ebx
nop
nop
nop
nop
movzx ebx, byte [edi + edx]
mov byte [esi + edx], bl
inc edx
cmp ecx, edx
jne 0x403430
add esi, edx
mov ecx, eax
sub ecx, edx
add edi, edx
mov ebx, edi
mov edi, dword [esp + 0x18]
mov edx, dword [esp + 0xc]
cmp eax, 8
jb 0x4034a1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [ebx]
mov byte [esi], al
movzx eax, byte [ebx + 1]
mov byte [esi + 1], al
movzx eax, byte [ebx + 2]
mov byte [esi + 2], al
movzx eax, byte [ebx + 3]
mov byte [esi + 3], al
movzx eax, byte [ebx + 4]
mov byte [esi + 4], al
movzx eax, byte [ebx + 5]
mov byte [esi + 5], al
movzx eax, byte [ebx + 6]
mov byte [esi + 6], al
movzx eax, byte [ebx + 7]
add ebx, 8
mov byte [esi + 7], al
add esi, 8
add ecx, 0xfffffff8
jne 0x403460
mov dword [esp + 4], ebx
cmp dword [ebp + 8], 0
je 0x403320
mov eax, esi
mov ebx, edi
sub eax, edi
cmp eax, 0x1ff
jl 0x403322
add dword [esp + 0x1c], eax
push eax
push dword [ebp + 0xc]
push ebx
call dword [ebp + 8]
add esp, 0xc
mov esi, eax
test eax, eax
mov eax, dword [esp]
je 0x4036df
mov ebx, esi
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x14]
sub ecx, eax
jne 0x403331
jmp 0x40303b
mov ecx, eax
cmp eax, 8
jae 0x403460
jmp 0x4034a1
mov eax, dword [esp + 0x48]
mov ebx, dword [esp + 0x18]
test dl, 1
je 0x403679
mov ecx, dword [esp + 0x44]
test ecx, ecx
jle 0x403683
jne 0x40354c
mov dword [esp + 0x1c], edi
inc eax
jmp 0x40103f
mov eax, dword [esp + 0x48]
sub ecx, edx
je 0x40366f
mov eax, ebx
sub eax, esi
add eax, 0x200
mov edx, ecx
cmp ecx, eax
jl 0x40355d
mov edx, eax
cmp dword [ebp + 8], 0
jne 0x403565
mov edx, ecx
test edx, edx
mov dword [esp], edx
mov dword [esp + 0x1c], edi
mov dword [esp + 0x18], ebx
mov dword [esp + 0x44], ecx
je 0x4035d0
mov eax, esi
and eax, 3
je 0x4035d0
mov edi, esi
not esi
and esi, 3
lea ebx, [edx - 1]
cmp esi, ebx
jb 0x40358f
mov esi, ebx
lea eax, [esi + 1]
push eax
push 0x20
push edi
call fcn.0040c600
add esp, 0xc
lea ecx, [esi + edi]
inc ecx
sub ebx, esi
cmp ebx, 4
jge 0x4035d9
test ebx, ebx
je 0x403610
push ebx
push 0x20
mov esi, ecx
push ecx
call fcn.0040c600
add esp, 0xc
add esi, ebx
mov edi, dword [esp + 0x1c]
jmp 0x403616
mov ecx, esi
mov ebx, edx
cmp ebx, 4
jl 0x4035a9
mov eax, ebx
cmp ebx, 7
jl 0x4035e5
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.0040c600
add esp, 0xc
lea ecx, [esi + edi]
add ecx, 4
sub ebx, esi
add ebx, 0xfffffffc
test ebx, ebx
jne 0x4035ad
mov edi, dword [esp + 0x1c]
mov esi, ecx
mov ebx, dword [esp + 0x18]
mov eax, dword [esp + 0x48]
mov edx, dword [esp]
cmp dword [ebp + 8], 0
mov ecx, dword [esp + 0x44]
je 0x403544
mov eax, esi
sub eax, ebx
cmp eax, 0x1ff
jl 0x403540
mov edx, ebx
mov ebx, edi
mov edi, ecx
add ebx, eax
push eax
push dword [ebp + 0xc]
push edx
call dword [ebp + 8]
add esp, 0xc
test eax, eax
je 0x403707
mov esi, eax
mov edx, eax
mov eax, dword [esp + 0x48]
mov ecx, edi
mov edi, ebx
mov ebx, esi
mov edx, dword [esp]
jmp 0x403544
mov dword [esp + 0x1c], edi
inc eax
jmp 0x40103f
mov dword [esp + 0x1c], edi
inc eax
jmp 0x40103f
mov dword [esp + 0x1c], edi
inc eax
jmp 0x40103f
test eax, eax
je 0x40289e
test byte [esp + 0xc], 0x40
je 0x4036a2
inc ecx
cmp ecx, 4
je 0x4036a9
mov byte [esi], 0x30
dec eax
inc esi
jmp 0x40368d
movzx ecx, byte [0x450001]
xor cl, 0xa7
mov byte [esi], cl
xor ecx, ecx
inc esi
jmp 0x40368d
cmp dword [ebp + 8], 0
je 0x4036e5
mov eax, esi
sub eax, ebx
test eax, eax
mov edi, dword [esp + 0x1c]
jle 0x4036f2
add edi, eax
push eax
push dword [ebp + 0xc]
push ebx
call dword [ebp + 8]
add esp, 0xc
mov esi, eax
mov ebx, eax
jmp 0x4036f2
xor esi, esi
xor ebx, ebx
jmp 0x4036e8
mov byte [esi], 0
mov edi, dword [esp + 0x1c]
jmp 0x4036f2
xor esi, esi
xor ebx, ebx
mov eax, ebx
xor eax, esi
sub edi, eax
not ebx
and ebx, esi
lea eax, [edi + ebx*2]
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
xor esi, esi
mov edi, ebx
jmp 0x4036f0