Function at 0x404400
Capabilities:
Authenticate hmac
Encode data using xor
Get common file path
Get disk size

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x510fdd
mov eax, dword fs:[0]
push eax
sub esp, 0x520
mov eax, dword [0x577680]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov ebx, ecx
mov dword [ebp - 0x50c], ebx
mov eax, dword [ebx + 0x78]
mov dword [ebp - 0x528], ebx
cmp dword [eax - 0xc], 0
jne 0x40446f
call fcn.0040d150
test al, al
jne 0x40556b
mov ebx, dword [0x578ad4]
xor esi, esi
mov edi, ebx
nop
inc esi
dec edi
cmp esi, 0xf0
jb 0x404460
jmp 0x40556b
add eax, 0xfffffff0
push eax
call fcn.004056f0
add eax, 0x10
add esp, 4
mov dword [ebp - 0x4f0], eax
mov edx, dword [0x578ad4]
mov dword [ebp - 4], 0
lea ecx, [edx + 1]
lea eax, [edx + 2]
imul eax, ecx
imul eax, edx
cdq
mov ecx, 0xf
idiv ecx
cmp edx, 4
jne 0x4044bb
push edx
call fcn.004f04fa
mov ecx, dword [0x578ad4]
add esp, 4
mov dword [eax], ecx
push dword [ebx + 0x4c]
push ecx
mov ecx, esp
push str.8cb4b6baa7a8beb38a
call fcn.00401c30
lea eax, [ebp - 0x4e4]
push eax
call fcn.004146c0
add esp, 8
push dword [eax]
lea ecx, [ebp - 0x4f0]
mov byte [ebp - 4], 1
call fcn.00408eb0
mov edx, dword [ebp - 0x4e4]
add edx, 0xfffffff0
or edi, 0xffffffff
mov byte [ebp - 4], 0
lea ecx, [edx + 0xc]
mov eax, edi
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x404511
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea eax, [ebp - 0x500]
push eax
call fcn.00413f20
add esp, 4
mov esi, eax
push 0x528f38
lea ecx, [ebp - 0x4fc]
mov byte [ebp - 4], 2
call fcn.00401c30
push 0x528f30
push eax
lea eax, [ebp - 0x4e8]
push eax
mov byte [ebp - 4], 3
call fcn.00402b40
push esi
push eax
lea eax, [ebp - 0x4e4]
push eax
mov byte [ebp - 4], 4
call fcn.00402a80
add esp, 0x18
mov eax, dword [eax]
lea ecx, [ebp - 0x4f0]
push dword [eax - 0xc]
mov byte [ebp - 4], 5
push eax
call fcn.00402f00
mov edx, dword [ebp - 0x4e4]
add edx, 0xfffffff0
mov byte [ebp - 4], 4
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x404599
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x4e8]
add edx, 0xfffffff0
mov byte [ebp - 4], 3
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4045bc
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x4fc]
add edx, 0xfffffff0
mov byte [ebp - 4], 2
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4045df
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x500]
add edx, 0xfffffff0
mov byte [ebp - 4], 0
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x404602
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [0x5771f0]
mov ecx, 0x5771f0
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x4f4], eax
lea eax, [ebp - 0x4f4]
push eax
lea eax, [ebp - 0x4f0]
push eax
lea eax, [ebp - 0x4f8]
push eax
mov byte [ebp - 4], 6
call fcn.00417e90
lea eax, [ebp - 0x4e4]
push eax
mov byte [ebp - 4], 7
call fcn.00417130
push eax
lea eax, [ebp - 0x4f8]
push eax
call fcn.00402900
mov esi, dword [ebp - 0x4e4]
add esi, 0xfffffff0
add esp, 0x18
mov byte [ebp - 0x511], al
lea ecx, [esi + 0xc]
mov edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x404681
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov al, byte [ebp - 0x511]
test al, al
je 0x404822
call fcn.0040cf80
test al, al
jne 0x4046a8
call dword [sym.imp.KERNEL32.dll_GetTickCount]
xor edx, edx
mov ecx, 0x50
div ecx
inc edx
mov dword [0x578ad4], edx
lea eax, [ebp - 0x4f4]
push eax
push ecx
mov ecx, esp
push str.b49f92949cb6828398a28793968392a2859ba8bf838387a5928682928483a8
call fcn.00401c30
lea eax, [ebp - 0x500]
push eax
call fcn.004146c0
add esp, 8
mov esi, eax
mov edx, dword [0x5771f0]
mov ecx, 0x5771f0
mov byte [ebp - 4], 8
call dword [edx + 0xc]
add eax, 0x10
mov dword [ebp - 0x4e8], eax
push esi
lea eax, [ebp - 0x4e8]
push eax
lea eax, [ebp - 0x4fc]
push eax
mov byte [ebp - 4], 9
call fcn.0046cc80
add esp, 0xc
push eax
lea eax, [ebp - 0x4e4]
push eax
mov byte [ebp - 4], 0xa
call fcn.0046cc80
add esp, 0xc
push eax
mov ecx, ebx
mov byte [ebp - 4], 0xb
call fcn.0040c040
mov edx, dword [ebp - 0x4e4]
add edx, 0xfffffff0
mov byte [ebp - 4], 0xa
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x404746
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x4fc]
add edx, 0xfffffff0
mov byte [ebp - 4], 9
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x404769
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x4e8]
add edx, 0xfffffff0
mov byte [ebp - 4], 8
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x40478c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x500]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
mov byte [ebp - 4], 7
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4047af
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x4f8]
add edx, 0xfffffff0
mov byte [ebp - 4], 6
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4047d2
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x4f4]
add edx, 0xfffffff0
mov ecx, edi
lea eax, [edx + 0xc]
mov byte [ebp - 4], 0
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4047f5
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x4f0]
add edx, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea eax, [edx + 0xc]
lock xadd dword [eax], edi
dec edi
test edi, edi
jg 0x40556b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x40556b
mov esi, dword [ebp - 0x4f8]
cmp dword [esi - 0xc], 0
jne 0x4048e3
push ecx
mov ecx, esp
push str.b49f92949cb6828398a28793968392a2859ba8848385bd849899a8929a87838e
call fcn.00401c30
lea eax, [ebp - 0x4fc]
push eax
call fcn.004146c0
add esp, 8
mov esi, eax
mov edx, dword [0x5771f0]
mov ecx, 0x5771f0
mov byte [ebp - 4], 0xc
call dword [edx + 0xc]
add eax, 0x10
mov dword [ebp - 0x4e8], eax
push esi
lea eax, [ebp - 0x4e8]
push eax
lea eax, [ebp - 0x4e4]
push eax
mov byte [ebp - 4], 0xd
call fcn.0046cc80
add esp, 0xc
push eax
mov ecx, ebx
mov byte [ebp - 4], 0xe
call fcn.0040c040
mov edx, dword [ebp - 0x4e4]
add edx, 0xfffffff0
mov byte [ebp - 4], 0xd
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4048b5
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x4e8]
add edx, 0xfffffff0
mov byte [ebp - 4], 0xc
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4048d8
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x4fc]
jmp 0x404792
mov byte [ebp - 4], 0xf
call fcn.0040d020
push 3
lea eax, [ebp - 0x46c]
push esi
lea ecx, [ebp - 0x470]
mov dword [ebp - 0x470], eax
call fcn.00407240
push dword [ebp - 0x470]
lea ecx, [ebp - 0x3ec]
mov byte [ebp - 4], 0x10
call fcn.00401010
lea ecx, [ebp - 0x4e0]
mov byte [ebp - 4], 0x11
call fcn.0046d2e0
push 0
lea ecx, [ebp - 0x524]
mov byte [ebp - 4], 0x12
call fcn.004707b0
push 1
lea eax, [ebp - 0x524]
push eax
lea eax, [ebp - 0x3ec]
push eax
lea ecx, [ebp - 0x4e0]
mov byte [ebp - 4], 0x13
call fcn.0046eac0
test al, al
jne 0x404a81
push ecx
mov ecx, esp
push str.b49f92949cb6828398a28793968392a2859ba88796858492a89285859885
call fcn.00401c30
lea eax, [ebp - 0x510]
push eax
call fcn.004146c0
add esp, 8
mov esi, eax
mov edx, dword [0x5771f0]
mov ecx, 0x5771f0
mov byte [ebp - 4], 0x14
call dword [edx + 0xc]
add eax, 0x10
mov dword [ebp - 0x4e8], eax
push esi
lea eax, [ebp - 0x4e8]
push eax
lea eax, [ebp - 0x4e4]
push eax
mov byte [ebp - 4], 0x15
call fcn.0046cc80
add esp, 0xc
push eax
mov ecx, ebx
mov byte [ebp - 4], 0x16
call fcn.0040c040
mov edx, dword [ebp - 0x4e4]
add edx, 0xfffffff0
mov byte [ebp - 4], 0x15
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4049e5
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x4e8]
add edx, 0xfffffff0
mov byte [ebp - 4], 0x14
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x404a08
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x510]
add edx, 0xfffffff0
mov byte [ebp - 4], 0x13
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x404a2b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
call fcn.0040d170
test al, al
jne 0x404a3a
inc dword [0x578b64]
lea ecx, [ebp - 0x524]
mov byte [ebp - 4], 0x12
call fcn.00470ad0
lea ecx, [ebp - 0x4e0]
call fcn.00402630
lea ecx, [ebp - 0x3ec]
call fcn.004239c0
mov eax, dword [ebp - 0x470]
lea ecx, [ebp - 0x46c]
cmp eax, ecx
je 0x4047af
push eax
call fcn.004f1802
add esp, 4
jmp 0x4047af
push str._L_update_low_ver
lea ecx, [ebp - 0x4e8]
call fcn.00401ba0
lea eax, [ebp - 0x4e8]
push eax
lea eax, [ebp - 0x4e4]
push eax
mov byte [ebp - 4], 0x17
call fcn.00416580
add esp, 8
push dword [eax]
lea ecx, [ebp - 0x510]
mov byte [ebp - 4], 0x18
call fcn.00401b10
push dword [eax]
lea ecx, [ebp - 0x524]
mov byte [ebp - 4], 0x19
call fcn.00470d60
mov ecx, eax
call fcn.00472030
mov edx, dword [ebp - 0x510]
test al, al
sete bl
add edx, 0xfffffff0
mov byte [ebp - 4], 0x18
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x404afc
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x4e4]
add edx, 0xfffffff0
mov byte [ebp - 4], 0x17
lea eax, [edx + 0xc]
mov ecx, edi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x404b1f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x4e8]
add edx, 0xfffffff0
mov byte [ebp - 4], 0x13
lea eax, [edx + 0xc]
lock xadd dword [eax], edi
dec edi
test edi, edi
jg 0x404b40
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
test bl, bl
je 0x404c07
mov ecx, dword [0x578ad4]
mov eax, ecx
imul eax, ecx
imul eax, ecx
cdq
mov esi, 0x12
idiv esi
cmp edx, 0xc
jne 0x404bc0
movsd xmm3, qword [0x52a190]
movsd xmm6, qword [0x52a198]
movsd xmm5, qword [0x52a188]
movd xmm4, ecx
xorps xmm2, xmm2
cvtdq2pd xmm4, xmm4
jmp 0x404b90
addsd xmm2, xmm3
movapd xmm0, xmm2
mulsd xmm0, xmm2
comisd xmm0, xmm4
jbe 0x404baa
subsd xmm2, xmm3
divsd xmm3, xmm6
movapd xmm1, xmm2
mulsd xmm1, xmm2
movapd xmm0, xmm4
subsd xmm0, xmm1
comisd xmm0, xmm5
ja 0x404b90
lea ecx, [ebp - 0x524]
mov byte [ebp - 4], 0x12
call fcn.00470ad0
lea ecx, [ebp - 0x4e0]
call fcn.00402630
lea ecx, [ebp - 0x3ec]
call fcn.004239c0
mov eax, dword [ebp - 0x470]
lea ecx, [ebp - 0x46c]
cmp eax, ecx
je 0x40554a
push eax
call fcn.004f1802
add esp, 4
jmp 0x40554a
push str._L_update_low_ver
lea ecx, [ebp - 0x4e8]
call fcn.00401ba0
lea eax, [ebp - 0x4e8]
push eax
lea eax, [ebp - 0x4e4]
push eax
mov byte [ebp - 4], 0x1a
call fcn.00416580
add esp, 8
push dword [eax]
lea ecx, [ebp - 0x510]
mov byte [ebp - 4], 0x1b
call fcn.00401b10
push dword [eax]
lea ecx, [ebp - 0x524]
mov byte [ebp - 4], 0x1c
call fcn.00470d60
mov ecx, eax
call fcn.00471820
push eax
lea ecx, [ebp - 0x504]
call fcn.00401ba0
lea ecx, [ebp - 0x510]
call fcn.004020a0
lea ecx, [ebp - 0x4e4]
call fcn.004020a0
lea ecx, [ebp - 0x4e8]
mov byte [ebp - 4], 0x20
call fcn.004020a0
mov eax, dword [ebp - 0x504]
cmp dword [eax - 0xc], 0
jne 0x404d16
call fcn.0040d0c0
test al, al
jne 0x404cc4
mov eax, dword [0x578ad4]
xor esi, esi
test eax, eax
je 0x404cbe
jmp 0x404cb0
mov ecx, eax
cdq
and ecx, 1
sub eax, edx
add esi, ecx
sar eax, 1
jne 0x404cb0
mov dword [0x578ad4], esi
lea ecx, [ebp - 0x504]
call fcn.004020a0
lea ecx, [ebp - 0x524]
mov byte [ebp - 4], 0x12
call fcn.00470ad0
lea ecx, [ebp - 0x4e0]
call fcn.00402630
lea ecx, [ebp - 0x3ec]
call fcn.004239c0
mov eax, dword [ebp - 0x470]
lea ecx, [ebp - 0x46c]
cmp eax, ecx
je 0x40554a
push eax
call fcn.004f1802
add esp, 4
jmp 0x40554a
push str.update_high_ver
lea ecx, [ebp - 0x524]
call fcn.00470d60
mov ecx, eax
call fcn.00472030
test al, al
jne 0x404df1
call fcn.0040d240
test al, al
jne 0x404d9f
mov esi, dword [0x578ad4]
mov eax, 0x1a6d01a7
imul esi
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
imul ecx, ecx, 0x9b
mov eax, esi
sub eax, ecx
xor edi, edi
cmp eax, 3
je 0x404d99
mov eax, esi
or eax, 0xffffff15
add esi, eax
mov eax, esi
imul eax, esi
inc edi
cmp edi, eax
jg 0x404d99
mov eax, 0x1a6d01a7
imul esi
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
imul ecx, ecx, 0x9b
mov eax, esi
sub eax, ecx
cmp eax, 3
jne 0x404d66
mov dword [0x578ad4], edi
lea ecx, [ebp - 0x504]
call fcn.004020a0
lea ecx, [ebp - 0x524]
mov byte [ebp - 4], 0x12
call fcn.00470ad0
lea ecx, [ebp - 0x4e0]
call fcn.00402630
lea ecx, [ebp - 0x3ec]
call fcn.004239c0
mov eax, dword [ebp - 0x470]
lea ecx, [ebp - 0x46c]
cmp eax, ecx
je 0x40554a
push eax
call fcn.004f1802
add esp, 4
jmp 0x40554a
push str.update_high_ver
lea ecx, [ebp - 0x524]
call fcn.00470d60
mov ecx, eax
call fcn.00471820
push eax
lea ecx, [ebp - 0x500]
call fcn.00401ba0
mov eax, dword [ebp - 0x500]
mov byte [ebp - 4], 0x21
cmp dword [eax - 0xc], 0
jne 0x404ef1
mov ecx, dword [0x578ad4]
mov esi, 0x13
lea eax, [ecx + 1]
imul eax, ecx
cdq
idiv esi
cmp edx, 0x11
jne 0x404e94
movsd xmm3, qword [0x52a190]
movsd xmm6, qword [0x52a198]
movsd xmm5, qword [0x52a188]
movd xmm4, ecx
xorps xmm2, xmm2
cvtdq2pd xmm4, xmm4
addsd xmm2, xmm3
movapd xmm0, xmm2
mulsd xmm0, xmm2
comisd xmm0, xmm4
jbe 0x404e7e
subsd xmm2, xmm3
divsd xmm3, xmm6
movapd xmm1, xmm2
mulsd xmm1, xmm2
movapd xmm0, xmm4
subsd xmm0, xmm1
comisd xmm0, xmm5
ja 0x404e64
lea ecx, [ebp - 0x500]
call fcn.004020a0
lea ecx, [ebp - 0x504]
call fcn.004020a0
lea ecx, [ebp - 0x524]
mov byte [ebp - 4], 0x12
call fcn.00470ad0
lea ecx, [ebp - 0x4e0]
call fcn.00402630
lea ecx, [ebp - 0x3ec]
call fcn.004239c0
mov eax, dword [ebp - 0x470]
lea ecx, [ebp - 0x46c]
cmp eax, ecx
je 0x40554a
push eax
call fcn.004f1802
add esp, 4
jmp 0x40554a
push str._L_download_url
lea ecx, [ebp - 0x4e8]
call fcn.00401ba0
lea eax, [ebp - 0x4e8]
push eax
lea eax, [ebp - 0x4e4]
push eax
mov byte [ebp - 4], 0x22
call fcn.00416580
add esp, 8
push dword [eax]
lea ecx, [ebp - 0x510]
mov byte [ebp - 4], 0x23
call fcn.00401b10
push dword [eax]
lea ecx, [ebp - 0x524]
mov byte [ebp - 4], 0x24
call fcn.00470d60
mov ecx, eax
call fcn.00472030
test al, al
lea ecx, [ebp - 0x510]
sete bl
call fcn.004020a0
lea ecx, [ebp - 0x4e4]
call fcn.004020a0
lea ecx, [ebp - 0x4e8]
mov byte [ebp - 4], 0x21
call fcn.004020a0
test bl, bl
je 0x404fde
call fcn.0040d020
test al, al
jne 0x404f81
dec dword [0x578be8]
lea ecx, [ebp - 0x500]
call fcn.004020a0
lea ecx, [ebp - 0x504]
call fcn.004020a0
lea ecx, [ebp - 0x524]
mov byte [ebp - 4], 0x12
call fcn.00470ad0
lea ecx, [ebp - 0x4e0]
call fcn.00402630
lea ecx, [ebp - 0x3ec]
call fcn.004239c0
mov eax, dword [ebp - 0x470]
lea ecx, [ebp - 0x46c]
cmp eax, ecx
je 0x40554a
push eax
call fcn.004f1802
add esp, 4
jmp 0x40554a
push str._L_download_url
lea ecx, [ebp - 0x4e8]
call fcn.00401ba0
lea eax, [ebp - 0x4e8]
push eax
lea eax, [ebp - 0x52c]
push eax
mov byte [ebp - 4], 0x25
call fcn.00416580
add esp, 8
push dword [eax]
lea ecx, [ebp - 0x510]
mov byte [ebp - 4], 0x26
call fcn.00401b10
push dword [eax]
lea ecx, [ebp - 0x524]
mov byte [ebp - 4], 0x27
call fcn.00470d60
mov ecx, eax
call fcn.00471820
push eax
lea ecx, [ebp - 0x508]
call fcn.00401ba0
lea ecx, [ebp - 0x510]
call fcn.004020a0
lea ecx, [ebp - 0x52c]
call fcn.004020a0
lea ecx, [ebp - 0x4e8]
mov byte [ebp - 4], 0x2b
call fcn.004020a0
mov eax, dword [ebp - 0x508]
cmp dword [eax - 0xc], 0
jne 0x405104
call fcn.0040d070
test al, al
jne 0x40509c
push 4
call fcn.004f04fa
add esp, 4
mov esi, eax
call fcn.004f1791
mov dword [esi], eax
push esi
mov dword [0x578ad4], eax
call fcn.004f03fe
add esp, 4
lea ecx, [ebp - 0x508]
call fcn.004020a0
lea ecx, [ebp - 0x500]
call fcn.004020a0
lea ecx, [ebp - 0x504]
call fcn.004020a0
lea ecx, [ebp - 0x524]
mov byte [ebp - 4], 0x12
call fcn.00470ad0
lea ecx, [ebp - 0x4e0]
call fcn.00402630
lea ecx, [ebp - 0x3ec]
call fcn.004239c0
mov eax, dword [ebp - 0x470]
lea ecx, [ebp - 0x46c]
cmp eax, ecx
je 0x40554a
push eax
call fcn.004f1802
add esp, 4
jmp 0x40554a
mov eax, dword [ebp - 0x500]
push ecx
add eax, 0xfffffff0
mov dword [ebp - 0x4ec], esp
mov esi, esp
push eax
call fcn.004056f0
add eax, 0x10
add esp, 4
mov dword [esi], eax
mov eax, dword [ebp - 0x504]
push ecx
add eax, 0xfffffff0
mov esi, esp
push eax
mov byte [ebp - 4], 0x2c
call fcn.004056f0
add eax, 0x10
mov dword [esi], eax
mov esi, dword [ebp - 0x50c]
add esp, 4
mov ecx, esi
mov byte [ebp - 4], 0x2b
call fcn.0040c7f0
test al, al
je 0x40509c
lea eax, [ebp - 0x508]
push 0x5290fc
push eax
call fcn.00402960
add esp, 8
test al, al
jne 0x405587
lea eax, [ebp - 0x508]
push 0x529104
push eax
call fcn.00402960
add esp, 8
test al, al
jne 0x405587
xor eax, eax
push 0x206
push eax
mov word [ebp - 0x21c], ax
lea eax, [ebp - 0x21a]
push eax
call fcn.004f2250
add esp, 0xc
lea eax, [ebp - 0x21c]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
test eax, eax
jne 0x405251
push ecx
mov ecx, esp
push str.b49f92949cb6828398a28793968392a2859ba8b09283a3929a87a796839fa8
call fcn.00401c30
lea eax, [ebp - 0x4ec]
push eax
call fcn.004146c0
add esp, 8
mov edi, eax
mov edx, dword [0x5771f0]
mov ecx, 0x5771f0
mov byte [ebp - 4], 0x30
call dword [edx + 0xc]
add eax, 0x10
mov dword [ebp - 0x4e4], eax
push edi
lea eax, [ebp - 0x4e4]
push eax
lea eax, [ebp - 0x50c]
push eax
mov byte [ebp - 4], 0x31
call fcn.0046cc80
add esp, 0xc
push eax
mov ecx, esi
mov byte [ebp - 4], 0x32
call fcn.0040c040
lea ecx, [ebp - 0x50c]
call fcn.004020a0
lea ecx, [ebp - 0x4e4]
call fcn.004020a0
lea ecx, [ebp - 0x4ec]
call fcn.004020a0
jmp 0x40509c
lea eax, [ebp - 0x21c]
push eax
lea ecx, [ebp - 0x4fc]
call fcn.00401c30
mov eax, dword [ebp - 0x4fc]
lea ecx, [ebp - 0x4fc]
mov eax, dword [eax - 0xc]
dec eax
push eax
mov byte [ebp - 4], 0x33
call fcn.00405a80
movzx eax, ax
cmp eax, 0x5c
je 0x4052de
push str._L__
lea ecx, [ebp - 0x4e4]
call fcn.00401c30
lea eax, [ebp - 0x4e4]
push eax
lea eax, [ebp - 0x4ec]
push eax
mov byte [ebp - 4], 0x34
call fcn.00416580
add esp, 8
mov eax, dword [eax]
lea ecx, [ebp - 0x4fc]
push dword [eax - 0xc]
mov byte [ebp - 4], 0x35
push eax
call fcn.00402f00
lea ecx, [ebp - 0x4ec]
call fcn.004020a0
lea ecx, [ebp - 0x4e4]
mov byte [ebp - 4], 0x33
call fcn.004020a0
mov eax, dword [ebp - 0x4fc]
add eax, 0xfffffff0
push eax
call fcn.004056f0
add eax, 0x10
add esp, 4
mov dword [ebp - 0x4e8], eax
mov byte [ebp - 4], 0x36
call fcn.0040d0f0
test al, al
jne 0x40530c
inc dword [0x578ad4]
lea eax, [ebp - 0x4ec]
push eax
call fcn.00413f20
add esp, 4
mov eax, dword [eax]
lea ecx, [ebp - 0x4fc]
push dword [eax - 0xc]
mov byte [ebp - 4], 0x37
push eax
call fcn.00402f00
lea ecx, [ebp - 0x4ec]
mov byte [ebp - 4], 0x36
call fcn.004020a0
lea eax, [ebp - 0x4fc]
push eax
lea eax, [ebp - 0x508]
push eax
call fcn.0041aad0
add esp, 8
test al, al
jne 0x4053f9
push ecx
mov ecx, esp
push str.b49f92949cb6828398a28793968392a2859ba8bf838387a398b59e9996858eb19e9b92a5928682928483
call fcn.00401c30
lea eax, [ebp - 0x50c]
push eax
call fcn.004146c0
add esp, 8
mov edi, eax
mov edx, dword [0x5771f0]
mov ecx, 0x5771f0
mov byte [ebp - 4], 0x38
call dword [edx + 0xc]
add eax, 0x10
mov dword [ebp - 0x4e4], eax
push edi
lea eax, [ebp - 0x4e4]
push eax
lea eax, [ebp - 0x4ec]
push eax
mov byte [ebp - 4], 0x39
call fcn.0046cc80
add esp, 0xc
push eax
mov ecx, esi
mov byte [ebp - 4], 0x3a
call fcn.0040c040
lea ecx, [ebp - 0x4ec]
call fcn.004020a0
lea ecx, [ebp - 0x4e4]
call fcn.004020a0
lea ecx, [ebp - 0x50c]
call fcn.004020a0
lea ecx, [ebp - 0x4e8]
call fcn.004020a0
lea ecx, [ebp - 0x4fc]
call fcn.004020a0
jmp 0x40509c
lea eax, [ebp - 0x4e8]
push eax
lea eax, [ebp - 0x4fc]
push eax
mov ecx, esi
call fcn.004090f0
call fcn.0040cfe0
test al, al
jne 0x405438
mov esi, dword [0x578ad4]
mov ecx, 1
cmp esi, ecx
jle 0x405432
mov eax, esi
cdq
idiv ecx
inc ecx
add ecx, edx
cmp ecx, esi
jl 0x405426
mov dword [0x578ad4], ecx
call fcn.0040d070
lea ecx, [ebp - 0x4e8]
call fcn.004020a0
lea ecx, [ebp - 0x4fc]
call fcn.004020a0
lea ecx, [ebp - 0x508]
call fcn.004020a0
lea ecx, [ebp - 0x500]
call fcn.004020a0
lea ecx, [ebp - 0x504]
call fcn.004020a0
lea ecx, [ebp - 0x524]
mov byte [ebp - 4], 0x12
call fcn.00470ad0
lea ecx, [ebp - 0x4e0]
call fcn.00402630
lea ecx, [ebp - 0x3ec]
call fcn.004239c0
mov eax, dword [ebp - 0x470]
lea ecx, [ebp - 0x46c]
cmp eax, ecx
je 0x4054b2
push eax
call fcn.004f1802
add esp, 4
call fcn.0040d1c0
test al, al
jne 0x40554a
mov edx, dword [0x578ad4]
xor esi, esi
mov ecx, esi
and ecx, 1
dec ecx
not ecx
and ecx, edx
mov eax, esi
sar eax, 1
xor ecx, eax
mov eax, ecx
and eax, 1
dec eax
not eax
and eax, edx
sar ecx, 1
xor eax, ecx
mov ecx, eax
and ecx, 1
dec ecx
sar eax, 1
not ecx
and ecx, edx
xor ecx, eax
mov eax, ecx
and eax, 1
dec eax
not eax
and eax, edx
sar ecx, 1
xor eax, ecx
mov ecx, eax
and ecx, 1
dec ecx
sar eax, 1
not ecx
and ecx, edx
xor ecx, eax
mov eax, ecx
and eax, 1
dec eax
not eax
and eax, edx
sar ecx, 1
xor eax, ecx
mov ecx, eax
and ecx, 1
dec ecx
sar eax, 1
not ecx
and ecx, edx
xor ecx, eax
mov eax, ecx
and eax, 1
dec eax
not eax
and eax, edx
sar ecx, 1
xor eax, ecx
inc esi
add edx, eax
cmp esi, 0x100
jl 0x4054c7
mov dword [0x578ad4], edx
lea ecx, [ebp - 0x4f8]
call fcn.004020a0
lea ecx, [ebp - 0x4f4]
call fcn.004020a0
lea ecx, [ebp - 0x4f0]
call fcn.004020a0
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.004f0cd4
mov esp, ebp
pop ebp
ret
push ecx
mov ecx, esp
push str.b49f92949cb6828398a28793968392a2859ba882859ba89996a8919885a8828793968392
call fcn.00401c30
lea eax, [ebp - 0x50c]
push eax
call fcn.004146c0
add esp, 8
mov edi, eax
mov edx, dword [0x5771f0]
mov ecx, 0x5771f0
mov byte [ebp - 4], 0x2d
call dword [edx + 0xc]
add eax, 0x10
mov dword [ebp - 0x4e4], eax
push edi
lea eax, [ebp - 0x4e4]
push eax
lea eax, [ebp - 0x4ec]
push eax
mov byte [ebp - 4], 0x2e
call fcn.0046cc80
add esp, 0xc
push eax
mov ecx, esi
mov byte [ebp - 4], 0x2f
call fcn.0040c040
lea ecx, [ebp - 0x4ec]
call fcn.004020a0
lea ecx, [ebp - 0x4e4]
call fcn.004020a0
lea ecx, [ebp - 0x50c]
call fcn.004020a0
call fcn.0040cfe0
test al, al
jne 0x40509c
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceW]
jmp 0x40509c