Function at 0x402c00
Capabilities:
Get common file path
Write file on windows

Disassembly:
push edi
xor eax, eax
mov ecx, 0x4f
xor edx, edx
lea edi, [esp + 8]
and esp, 0xfffffff8
push dword [edi - 4]
push ebp
mov ebp, esp
push edi
push esi
lea edi, [ebp - 0x75c]
mov esi, 1
push ebx
mov ebx, 0x7f
sub esp, 0x8d8
mov dword [ebp - 0x834], 1
rep stosd dword es:[edi], eax
lea edi, [ebp - 0x814]
mov ecx, 0x2e
mov dword [ebp - 0x75c], 2
rep stosd dword es:[edi], eax
mov ecx, 0x7f
mov edi, 0x3c
mov dword [ebp - 0x758], 1
mov dword [ebp - 0x754], 2
mov dword [ebp - 0x750], 0x13c
mov dword [ebp - 0x74c], 0x18
mov dword [ebp - 0x748], 0x38
mov dword [ebp - 0x73c], 1
mov dword [ebp - 0x738], 0x10001
mov dword [ebp - 0x734], 0xac44
mov dword [ebp - 0x730], 0xac44
mov dword [ebp - 0x72c], 0x80001
mov dword [ebp - 0x724], 0x100
mov dword [ebp - 0x830], 2
mov dword [ebp - 0x82c], 4
mov dword [ebp - 0x828], 0xd8
mov dword [ebp - 0x824], 0x20
mov dword [ebp - 0x820], 0x38
mov dword [ebp - 0x81c], pe_nt_image_headers32
mov dword [ebp - 0x818], 0x88
mov dword [ebp - 0x810], 1
mov dword [ebp - 0x80c], 2
mov word [ebp - 0x7fa], cx
mov word [ebp - 0x7f6], bx
mov word [ebp - 0x7f4], si
mov dword [ebp - 0x7e0], 1
mov dword [ebp - 0x7dc], 1
mov dword [ebp - 0x7d8], 0x14
mov word [ebp - 0x7d4], di
mov dword [ebp - 0x7cc], 1
mov dword [ebp - 0x7c4], 0x10
mov dword [ebp - 0x7b4], 3
mov dword [ebp - 0x794], 0x80000000
mov dword [ebp - 0x790], 0x80000000
mov dword [ebp - 0x78c], 0x27100000
mov dword [ebp - 0x788], 0x80000000
mov dword [ebp - 0x870], 0
mov dword [ebp - 0x86c], 0
mov dword [ebp - 0x868], 0
mov dword [ebp - 0x864], 0
mov dword [ebp - 0x860], 0
mov dword [ebp - 0x874], 0x1c
mov dword [ebp - 0x85c], 0x1000
mov dword [ebp + eax - 0x850], edx
add eax, 4
cmp eax, 0x1c
jb 0x402deb
mov dword [ebp - 0x858], 0x24
lea eax, [ebp - 0x89c]
mov dword [ebp - 0x854], 0xc
mov dword [ebp - 0x848], 2
mov dword [ebp - 0x844], 0xac44
mov dword [ebp - 0x8a0], 0
mov dword [esp + 0x10], eax
mov eax, dword [sym.imp.ole32.dll_CoCreateInstance]
mov dword [esp + 0xc], 0x40d694
mov dword [esp + 8], 1
mov dword [esp + 4], 0
mov dword [esp], 0x40d6c4
mov dword [ebp - 0x8c4], eax
call eax
sub esp, 0x14
mov ebx, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x3d1
xor eax, eax
test ebx, ebx
sete al
mov dword [esp + 8], ebx
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x89c]
lea ecx, [ebp - 0x8a4]
mov edx, dword [eax]
mov dword [esp + 8], ecx
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [edx + 0x1c]
sub esp, 0xc
mov ebx, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x3d3
xor eax, eax
test ebx, ebx
sete al
mov dword [esp + 8], ebx
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov dword [esp + 4], 0x30
mov dword [esp], 1
call dword [sym.imp.msvcrt.dll_calloc]
mov ebx, eax
test eax, eax
je 0x404736
mov dword [eax], 0x40cc20
mov edi, 1
xor esi, esi
mov dword [eax + 4], 0x40cbfc
mov dword [eax + 8], 1
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x3d6
mov dword [esp + 8], esi
mov dword [esp], edi
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
lea eax, [ebp - 0x8b0]
mov dword [esp + 0xc], 0x40d4b4
mov dword [esp + 0x10], eax
mov dword [esp + 8], 1
mov dword [esp + 4], 0
mov dword [esp], 0x40d6a4
mov eax, dword [ebp - 0x8c4]
call eax
sub esp, 0x14
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x3db
xor eax, eax
test esi, esi
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp + 4], 1
mov dword [esp], eax
call dword [edx + 0x14]
mov edi, dword [0x428050]
sub esp, 8
mov esi, eax
call fcn.004078d0
mov ecx, dword [eax + 0x10]
mov dword [eax + 0x14], 1
lea edx, [ecx + ecx]
xor ecx, ecx
test edi, edi
setne cl
or edx, ecx
mov dword [eax + 0x10], edx
jmp 0x403029
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x3df
xor eax, eax
cmp esi, 0x88781131
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
call fcn.004078d0
shr dword [eax + 0x10], 1
call fcn.004078d0
mov edx, dword [eax + 0x14]
mov dword [eax + 0x14], 0
test edx, edx
jne 0x402ff0
mov eax, dword [ebp - 0x8b0]
lea edi, [ebp - 0x8b8]
mov edx, dword [eax]
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [edx + 0x48]
sub esp, 0xc
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x3e2
xor eax, eax
cmp esi, 0x80004003
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp + 8], edi
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [edx + 0x48]
sub esp, 0xc
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x3e4
xor eax, eax
cmp esi, 0x88781131
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [edx + 0xc]
sub esp, 8
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x3e8
xor eax, eax
test esi, esi
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [edx + 0xc]
sub esp, 8
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x3ea
xor eax, eax
cmp esi, 0x8878112f
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp + 4], 1
mov dword [esp], eax
call dword [edx + 0x14]
sub esp, 8
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x3ec
xor eax, eax
test esi, esi
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov dword [ebp - 0x8b8], 0x12
mov edx, dword [eax]
mov dword [esp + 8], edi
lea edi, [ebp - 0x8c0]
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [edx + 0x48]
sub esp, 0xc
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x3ef
xor eax, eax
test esi, esi
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x3f0
mov eax, dword [ebp - 0x8b8]
mov dword [esp + 4], str.got__lu_n
cmp eax, 0x12
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp], eax
call dword [edx + 0x10]
sub esp, 4
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x3f2
xor eax, eax
test esi, esi
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp], eax
call dword [edx + 0x10]
sub esp, 4
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x3f4
xor eax, eax
cmp esi, 0x88781130
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [edx + 0x30]
sub esp, 8
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x3f8
xor eax, eax
cmp esi, 0x80004003
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp + 4], edi
mov dword [esp], eax
call dword [edx + 0x30]
sub esp, 8
mov esi, eax
mov eax, 0x3fa
call fcn.004012f0
xor eax, eax
cmp esi, 0x8878112e
mov dword [esp + 8], esi
sete al
mov dword [esp + 4], str.got__lx_n
mov dword [esp], eax
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [edx + 0xc]
sub esp, 8
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x3fe
xor eax, eax
test esi, esi
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp + 4], 1
mov dword [esp], eax
call dword [edx + 0x34]
sub esp, 8
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x400
xor eax, eax
cmp esi, 0x8878112e
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [edx + 0x34]
sub esp, 8
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x402
xor eax, eax
cmp esi, 1
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [edx + 0x38]
sub esp, 8
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x405
xor eax, eax
test esi, esi
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp + 4], ebx
mov dword [esp], eax
call dword [edx + 0x38]
sub esp, 8
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x407
xor eax, eax
test esi, esi
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebx]
mov dword [esp], ebx
call dword [eax + 4]
mov eax, dword [ebx]
sub esp, 4
mov dword [esp], ebx
call dword [eax + 8]
sub esp, 4
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x409
xor eax, eax
cmp esi, 2
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lu_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp + 4], 1
mov dword [esp], eax
call dword [edx + 0x34]
sub esp, 8
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x40b
xor eax, eax
cmp esi, 0x88781131
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [edx + 0x2c]
sub esp, 8
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x40f
xor eax, eax
cmp esi, 0x80004003
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov ecx, dword [ebp - 0x8a4]
mov edx, dword [eax]
mov dword [esp + 4], ecx
mov dword [esp], eax
call dword [edx + 0x2c]
sub esp, 8
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x411
xor eax, eax
test esi, esi
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov esi, dword [ebp - 0x8a4]
mov eax, dword [esi]
mov dword [esp], esi
call dword [eax + 4]
mov eax, dword [esi]
sub esp, 4
mov dword [esp], esi
call dword [eax + 8]
mov edi, dword [0x428050]
sub esp, 4
mov esi, eax
call fcn.004078d0
mov ecx, dword [eax + 0x10]
mov dword [eax + 0x14], 1
lea edx, [ecx + ecx]
xor ecx, ecx
test edi, edi
setne cl
or edx, ecx
mov dword [eax + 0x10], edx
jmp 0x403676
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x413
xor eax, eax
cmp esi, 1
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lu_n
call fcn.00401d60
call fcn.004078d0
shr dword [eax + 0x10], 1
call fcn.004078d0
mov edx, dword [eax + 0x14]
mov dword [eax + 0x14], 0
test edx, edx
jne 0x403640
mov eax, dword [ebp - 0x8b0]
lea edi, [ebp - 0x8b8]
mov edx, dword [eax]
mov dword [esp + 4], 1
mov dword [esp], eax
call dword [edx + 0x34]
sub esp, 8
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x415
xor eax, eax
cmp esi, 0x88781131
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov edx, dword [ebp - 0x8a4]
mov eax, dword [ebx]
mov dword [esp], ebx
mov dword [esp + 4], edx
call dword [eax + 0x10]
sub esp, 8
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x419
xor eax, eax
test esi, esi
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp + 4], 1
mov dword [esp], eax
call dword [edx + 0x34]
sub esp, 8
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x41b
xor eax, eax
test esi, esi
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp + 4], 1
mov dword [esp], eax
call dword [edx + 0x34]
sub esp, 8
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x41d
xor eax, eax
cmp esi, 1
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp], eax
call dword [edx + 0x10]
sub esp, 4
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x421
xor eax, eax
test esi, esi
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [edx + 0x38]
sub esp, 8
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x424
xor eax, eax
test esi, esi
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebx]
mov dword [esp], ebx
call dword [eax + 4]
mov eax, dword [ebx]
sub esp, 4
mov dword [esp], ebx
call dword [eax + 8]
sub esp, 4
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x426
xor eax, eax
cmp esi, 1
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lu_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [edx + 0x34]
sub esp, 8
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x42a
xor eax, eax
cmp esi, 0x88781131
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [edx + 0x34]
sub esp, 8
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x42c
xor eax, eax
cmp esi, 1
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
lea ecx, [ebp - 0x858]
mov edx, dword [eax]
mov dword [esp + 4], ecx
mov dword [esp], eax
call dword [edx + 0xc]
sub esp, 8
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x431
xor eax, eax
test esi, esi
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov dword [ebp - 0x8b8], 0x12
lea ecx, [ebp - 0x886]
mov edx, dword [eax]
mov dword [esp + 4], ecx
mov dword [esp + 8], edi
mov dword [esp], eax
call dword [edx + 0x48]
sub esp, 0xc
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x435
xor eax, eax
test esi, esi
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp + 4], ebx
mov dword [esp], eax
call dword [edx + 0x38]
sub esp, 8
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x437
xor eax, eax
test esi, esi
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebx]
mov dword [esp], ebx
call dword [eax + 4]
mov eax, dword [ebx]
sub esp, 4
mov dword [esp], ebx
call dword [eax + 8]
sub esp, 4
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x439
xor eax, eax
cmp esi, 2
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lu_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp + 4], 1
mov dword [esp], eax
call dword [edx + 0x34]
sub esp, 8
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x43b
xor eax, eax
test esi, esi
sete al
mov dword [esp + 8], esi
lea esi, [ebp - 0x420]
mov dword [esp + 4], str.got__lx_n
mov dword [esp], eax
mov edi, dword fs:[0x18]
call fcn.00401d60
mov dword [esp + 4], esi
mov dword [esp], 0x104
call dword [sym.imp.kernel32.dll_GetTempPathW]
lea eax, [ebp - 0x218]
sub esp, 8
mov dword [esp], esi
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0
mov dword [esp + 4], str.synth
call dword [sym.imp.kernel32.dll_GetTempFileNameW]
lea eax, [ebp - 0x218]
sub esp, 0x10
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 2
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0xc0000000
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_CreateFileW]
sub esp, 0x1c
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x440
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.CreateFileW_failed__error__lu._n
mov dword [esp + 8], eax
xor eax, eax
cmp esi, 0xffffffff
setne al
mov dword [esp], eax
call fcn.00401d60
lea eax, [ebp - 0x8b4]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], 4
mov dword [esp + 4], str.RIFF
mov dword [ebp - 0x8c4], esi
mov dword [esp], esi
mov esi, dword [sym.imp.kernel32.dll_WriteFile]
call esi
sub esp, 0x14
mov dword [ebp - 0x8c8], eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x442
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.WriteFile_failed__error__lu._n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8c8]
mov dword [esp], edx
call fcn.00401d60
lea eax, [ebp - 0x8b4]
mov dword [ebp - 0x8b8], 0x1226
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x8b8]
mov dword [esp + 0x10], 0
mov dword [esp + 8], 4
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x8c4]
mov dword [esp], eax
call esi
sub esp, 0x14
mov dword [ebp - 0x8c8], eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x445
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.WriteFile_failed__error__lu._n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8c8]
mov dword [esp], edx
call fcn.00401d60
lea eax, [ebp - 0x8b4]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], 8
mov dword [esp + 4], str.WAVEfmt
mov eax, dword [ebp - 0x8c4]
mov dword [esp], eax
call esi
sub esp, 0x14
mov dword [ebp - 0x8c8], eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x447
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.WriteFile_failed__error__lu._n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8c8]
mov dword [esp], edx
call fcn.00401d60
lea eax, [ebp - 0x8b4]
mov dword [ebp - 0x8b8], 0x12
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x8b8]
mov dword [esp + 0x10], 0
mov dword [esp + 8], 4
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x8c4]
mov dword [esp], eax
call esi
sub esp, 0x14
mov dword [ebp - 0x8c8], eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x44a
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.WriteFile_failed__error__lu._n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8c8]
mov dword [esp], edx
call fcn.00401d60
lea eax, [ebp - 0x8b4]
mov dword [esp + 0x10], 0
lea ecx, [ebp - 0x886]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x8b8]
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x8c4]
mov dword [esp], eax
call esi
sub esp, 0x14
mov dword [ebp - 0x8c8], eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x44c
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.WriteFile_failed__error__lu._n
mov dword [esp + 8], eax
mov ecx, dword [ebp - 0x8c8]
mov dword [esp], ecx
call fcn.00401d60
lea eax, [ebp - 0x8b4]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], 4
mov dword [esp + 4], str.data
mov eax, dword [ebp - 0x8c4]
mov dword [esp], eax
call esi
sub esp, 0x14
mov dword [ebp - 0x8c8], eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x44e
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.WriteFile_failed__error__lu._n
mov dword [esp + 8], eax
mov ecx, dword [ebp - 0x8c8]
mov dword [esp], ecx
call fcn.00401d60
lea eax, [ebp - 0x8b4]
mov dword [ebp - 0x8b8], 0x1200
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x8b8]
mov dword [esp + 0x10], 0
mov dword [esp + 8], 4
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x8c4]
mov dword [esp], eax
call esi
sub esp, 0x14
mov dword [ebp - 0x8c8], eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x451
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.WriteFile_failed__error__lu._n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x8c8]
mov dword [esp], edx
call fcn.00401d60
mov esi, dword [ebp - 0x8c4]
mov eax, ebx
lea edx, [ebp - 0x620]
mov ecx, esi
call fcn.00402a30
xor eax, eax
lea esi, [esi]
nop
mov byte [ebp + eax - 0x720], al
add eax, 1
cmp eax, 0x100
jne 0x403e50
mov eax, dword [ebp - 0x8b0]
lea ecx, [ebp - 0x75c]
mov dword [ebp - 0x8a0], 0xdeadbeef
lea edi, [ebp - 0x8a0]
mov dword [ebp - 0x8ac], 0
mov edx, dword [eax]
mov dword [esp + 8], ecx
lea ecx, [ebp - 0x8ac]
mov dword [esp + 4], ecx
mov dword [esp + 0xc], edi
mov dword [esp], eax
call dword [edx + 0x18]
sub esp, 0x10
mov dword [ebp - 0x8c4], eax
call fcn.004078d0
mov edx, dword [ebp - 0x8c4]
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x45c
xor eax, eax
test edx, edx
sete al
mov dword [esp + 8], edx
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x45d
mov eax, dword [ebp - 0x8ac]
mov dword [esp + 4], str.got__p_n
test eax, eax
mov dword [esp + 8], eax
setne al
movzx eax, al
mov dword [esp], eax
call fcn.00401d60
mov ecx, dword [0x428050]
mov dword [ebp - 0x8c4], ecx
call fcn.004078d0
mov ecx, dword [eax + 0x10]
mov dword [eax + 0x14], 1
lea edx, [ecx + ecx]
mov ecx, dword [ebp - 0x8c4]
test ecx, ecx
setne cl
movzx ecx, cl
or edx, ecx
mov dword [eax + 0x10], edx
jmp 0x403f84
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x45e
mov eax, dword [ebp - 0x8a0]
mov dword [esp + 4], str.got__u_n
test eax, eax
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401d60
call fcn.004078d0
shr dword [eax + 0x10], 1
call fcn.004078d0
mov edx, dword [eax + 0x14]
mov dword [eax + 0x14], 0
test edx, edx
jne 0x403f48
mov eax, dword [ebp - 0x8b0]
lea ecx, [ebp - 0x834]
mov dword [ebp - 0x8a0], 0xdeadbeef
mov dword [ebp - 0x8a8], 0
mov edx, dword [eax]
mov dword [ebp - 0x8c4], esi
mov dword [esp + 8], ecx
lea ecx, [ebp - 0x8a8]
mov dword [esp + 4], ecx
mov dword [esp + 0xc], edi
mov dword [esp], eax
call dword [edx + 0x18]
sub esp, 0x10
mov edi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x463
xor eax, eax
test edi, edi
sete al
mov dword [esp + 8], edi
lea edi, [ebp - 0x8c0]
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x464
mov eax, dword [ebp - 0x8a8]
mov dword [esp + 4], str.got__p_n
test eax, eax
mov dword [esp + 8], eax
setne al
movzx eax, al
mov dword [esp], eax
call fcn.00401d60
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x465
mov eax, dword [ebp - 0x8a0]
mov dword [esp + 4], str.got__u_n
cmp eax, 1
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp + 4], edi
mov dword [esp], eax
call dword [edx + 0x30]
sub esp, 8
mov edi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x469
xor eax, eax
test edi, edi
sete al
mov dword [esp + 8], edi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x89c]
lea ecx, [ebp - 0x8bc]
mov edx, dword [eax]
mov dword [esp + 8], ecx
lea ecx, [ebp - 0x874]
mov dword [esp + 4], ecx
mov dword [esp + 0xc], 0
mov dword [esp], eax
call dword [edx + 0x10]
sub esp, 0x10
mov edi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x46b
xor eax, eax
test edi, edi
sete al
mov dword [esp + 8], edi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8bc]
mov edx, dword [eax]
mov dword [esp + 0x10], 0x782790
mov dword [esp + 0xc], 1
mov dword [esp + 4], 0
mov dword [esp + 8], 0
mov dword [esp], eax
call dword [edx + 0x14]
sub esp, 0x14
mov edi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x46e
xor eax, eax
test edi, edi
sete al
mov dword [esp + 8], edi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8c0]
lea ecx, [ebp - 0x890]
mov edx, dword [eax]
mov dword [esp + 4], ecx
mov dword [esp], eax
call dword [edx + 0xc]
sub esp, 8
mov edi, eax
mov eax, 0x470
call fcn.004012f0
xor eax, eax
test edi, edi
mov dword [esp + 8], edi
sete al
mov dword [esp + 4], str.got__lx_n
mov dword [esp], eax
call fcn.00401d60
mov eax, dword [ebp - 0x8bc]
lea ecx, [ebp - 0x894]
mov edx, dword [eax]
mov dword [esp + 4], ecx
mov dword [esp], eax
call dword [edx + 0x24]
sub esp, 8
mov edi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x472
xor eax, eax
test edi, edi
sete al
mov dword [esp + 8], edi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8bc]
lea ecx, [ebp - 0x898]
mov edx, dword [eax]
mov dword [esp + 4], ecx
mov dword [esp], eax
call dword [edx + 0x2c]
sub esp, 8
mov edi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x474
xor eax, eax
test edi, edi
sete al
mov dword [esp + 8], edi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov ecx, dword [ebp - 0x898]
mov edx, dword [eax]
mov dword [esp + 0x10], ecx
mov ecx, dword [ebp - 0x894]
mov dword [esp + 0xc], ecx
mov esi, dword [ebp - 0x890]
mov edi, dword [ebp - 0x88c]
mov dword [esp], eax
mov dword [esp + 4], esi
mov dword [esp + 8], edi
call dword [edx + 0x20]
sub esp, 0x14
mov edi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x476
xor eax, eax
test edi, edi
sete al
mov dword [esp + 8], edi
mov edi, 8
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8bc]
mov edx, dword [eax]
mov dword [esp], eax
call dword [edx + 8]
mov eax, dword [ebp - 0x8c0]
sub esp, 4
mov edx, dword [eax]
mov dword [esp], eax
call dword [edx + 8]
mov esi, dword [ebp - 0x8c4]
sub esp, 4
lea esi, [esi]
nop
mov ecx, esi
lea edx, [ebp - 0x620]
mov eax, ebx
call fcn.00402a30
sub edi, 1
jne 0x4042e8
mov dword [esp], esi
call dword [sym.imp.kernel32.dll_CloseHandle]
sub esp, 4
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x47e
lea eax, [ebp - 0x218]
call fcn.00401350
mov dword [esp], str.Rendered_samples_to__s_n
mov dword [esp + 4], eax
call fcn.004017c0
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [edx + 0x34]
sub esp, 8
mov esi, eax
mov eax, 0x482
call fcn.004012f0
xor eax, eax
test esi, esi
mov dword [esp + 8], esi
sete al
mov dword [esp + 4], str.got__lx_n
mov dword [esp], eax
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [edx + 0x38]
sub esp, 8
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x484
xor eax, eax
test esi, esi
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebx]
mov dword [esp], ebx
call dword [eax + 4]
mov eax, dword [ebx]
sub esp, 4
mov dword [esp], ebx
call dword [eax + 8]
sub esp, 4
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x486
xor eax, eax
cmp esi, 1
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lu_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [edx + 0x1c]
sub esp, 0x10
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x489
xor eax, eax
cmp esi, 0x80004005
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp + 0xc], 0xdeadbeef
mov dword [esp + 8], 0x401f40
mov dword [esp + 4], 0xdeadbeef
mov dword [esp], eax
call dword [edx + 0x1c]
sub esp, 0x10
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x48b
xor eax, eax
cmp esi, 0x80004005
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp + 0xc], 0xdeadbeef
mov dword [esp + 8], 0x401eb0
mov ecx, dword [ebp - 0x8ac]
mov dword [esp], eax
mov dword [esp + 4], ecx
call dword [edx + 0x1c]
sub esp, 0x10
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x48d
xor eax, eax
test esi, esi
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x48e
xor eax, eax
mov dword [esp + 4], str.callback_called_n
mov edx, dword [0x428000]
test edx, edx
sete al
mov dword [esp], eax
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov ecx, dword [ebp - 0x8a8]
mov dword [esp], eax
mov dword [esp + 4], ecx
call dword [edx + 0x1c]
sub esp, 0x10
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x490
xor eax, eax
test esi, esi
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov esi, dword [0x428050]
call fcn.004078d0
xor ecx, ecx
mov edi, dword [eax + 0x10]
test esi, esi
mov dword [eax + 0x14], 1
setne cl
lea edx, [edi + edi]
or edx, ecx
mov dword [eax + 0x10], edx
jmp 0x4045f7
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x491
mov dword [esp + 4], str.callback_not_called_n
mov eax, dword [0x428000]
mov dword [esp], eax
call fcn.00401d60
call fcn.004078d0
shr dword [eax + 0x10], 1
call fcn.004078d0
mov edx, dword [eax + 0x14]
mov dword [eax + 0x14], 0
test edx, edx
jne 0x4045c8
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp], eax
call dword [edx + 0x10]
sub esp, 4
mov esi, eax
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x494
xor eax, eax
test esi, esi
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], eax
call dword [edx + 0x1c]
mov edi, dword [0x428050]
sub esp, 0x10
mov esi, eax
call fcn.004078d0
mov ecx, dword [eax + 0x10]
mov dword [eax + 0x14], 1
lea edx, [ecx + ecx]
xor ecx, ecx
test edi, edi
setne cl
or edx, ecx
mov dword [eax + 0x10], edx
jmp 0x4046d9
call fcn.004078d0
mov dword [eax], 0x40c01a
mov dword [eax + 4], 0x497
xor eax, eax
cmp esi, 0x88781131
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str.got__lx_n
call fcn.00401d60
call fcn.004078d0
shr dword [eax + 0x10], 1
call fcn.004078d0
mov edx, dword [eax + 0x14]
mov dword [eax + 0x14], 0
test edx, edx
jne 0x4046a0
mov eax, dword [ebp - 0x8b0]
mov edx, dword [eax]
mov dword [esp], eax
call dword [edx + 8]
mov eax, dword [ebx]
sub esp, 4
mov dword [esp], ebx
call dword [eax + 8]
mov eax, dword [ebp - 0x8a4]
sub esp, 4
mov edx, dword [eax]
mov dword [esp], eax
call dword [edx + 8]
mov eax, dword [ebp - 0x89c]
sub esp, 4
mov edx, dword [eax]
mov dword [esp], eax
call dword [edx + 8]
sub esp, 4
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
lea esp, [edi - 8]
pop edi
ret
xor edi, edi
mov esi, 0x8007000e
jmp 0x402f20