Function at 0x10015080
Capabilities:
Encode data using xor
Get file attributes
Read file on windows
Set file attributes
Write file on windows

Disassembly:
sub esp, 0xaa4
push ebx
push ebp
push esi
mov esi, dword [esp + 0xabc]
xor ebx, ebx
push edi
mov edi, dword [esp + 0xab8]
mov dword [esi + 0x3df8], ebx
mov dword [esi + 0x8f8], ebx
mov dword [esi + 0x8fc], ebx
mov dword [esi + 0x900], ebx
mov dword [esi + 0x904], ebx
mov dword [esi + 0x8f0], ebx
mov ecx, dword [edi + 0x58]
lea eax, [esi + 0xaf9c]
push ecx
push eax
mov dword [esp + 0x30], ebx
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x28], 0xfffffffd
mov dword [esp + 0x2c], 0xffffffff
mov dword [esp + 0x34], ebx
mov dword [esp + 0x48], eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov eax, dword [esi + 0x8c8]
lea ebp, [esi + 0xbfb0]
cmp eax, ebx
je 0x1001510c
push ebx
push 0x18b
call fcn.10020fb0
jmp 0x10015128
mov edx, dword [esi + 0x4ef0]
mov eax, dword [esi + 0x3e18]
push edx
push eax
push ebx
push 0x187
call fcn.10020fb0
add esp, 8
push eax
push ebp
call dword [sym.imp.USER32.dll_wsprintfA]
mov eax, dword [esi + 0x3e18]
add esp, 0x10
lea ecx, [eax + 1]
push eax
mov dword [esi + 0x3e18], ecx
mov edx, dword [esi + 0x4ef0]
push edx
push ebp
call fcn.10013800
add esp, 0xc
test eax, eax
je 0x10015167
pop edi
pop esi
pop ebp
mov eax, 9
pop ebx
add esp, 0xaa4
ret
mov eax, dword [edi + 0x58]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ecx, dword [edi + 0x58]
mov dword [edi + 0x20], eax
xor edx, edx
push esi
cmp byte [eax + ecx - 1], 0x2f
mov word [edi + 0x34], 0xffff
mov eax, dword [esi + 0x8c8]
sete dl
cmp eax, ebx
mov dword [esp + 0x1c], edx
je 0x100151bd
lea eax, [esp + 0x24]
lea ecx, [esp + 0x2c]
push eax
push ecx
push ebx
call fcn.10021990
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x30]
add esp, 0x10
mov dword [edi + 8], eax
mov dword [esp + 0x18], ebx
jmp 0x10015247
mov ecx, dword [edi + 0x48]
lea edx, [esp + 0x24]
lea eax, [esp + 0x2c]
push edx
push eax
push ecx
call fcn.10021990
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x34]
add esp, 0x10
cmp eax, ebx
je 0x100151eb
cmp edx, 0xffffffff
jg 0x10015205
jl 0x100151eb
cmp ecx, 0xfffffffe
jae 0x10015205
cmp ecx, 0xfffffffd
jne 0x100151f5
cmp edx, 0xffffffff
je 0x10015205
pop edi
pop esi
pop ebp
mov eax, 0x12
pop ebx
add esp, 0xaa4
ret
mov dword [edi + 8], eax
mov eax, dword [esi + 0x918]
cmp eax, ebx
je 0x10015224
cmp dword [esi + 0x91c], ebx
je 0x10015224
mov eax, dword [esp + 0x28]
and al, 0xdf
mov dword [esp + 0x28], eax
cmp dword [esi + 0x92c], ebx
je 0x10015234
cmp dword [esi + 0x930], ebx
je 0x10015247
cmp edx, ebx
jl 0x10015247
jg 0x10015eaa
cmp ecx, 0xffffffff
jae 0x10015eaa
mov ax, word [esi + 0x4ef4]
test ah, 0x80
je 0x1001527b
test ah, 0x10
je 0x1001527b
cmp dword [esi + 0x938], ebx
je 0x1001527b
cmp dword [esi + 0x4fd0], ebx
je 0x1001527b
mov eax, dword [esi + 0x4fd4]
mov dword [edi + 8], eax
mov eax, dword [esi + 0x4fd8]
mov dword [esp + 0x28], eax
cmp ecx, 0xfffffffe
jne 0x10015295
cmp edx, 0xffffffff
jne 0x10015295
mov dword [esp + 0x18], 1
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], ebx
mov eax, dword [esi + 0x4e84]
mov dword [esi + 0x30], 0xffffffff
cmp eax, ebx
mov dword [esi + 0x68], ebx
je 0x100152c0
mov ecx, dword [edi + 0x48]
push eax
push ecx
call fcn.10014fa0
add esp, 8
test eax, eax
je 0x100152c0
mov dword [esp + 0x10], ebx
jmp 0x100152ca
mov edx, dword [esi + 0x4e5c]
mov dword [esp + 0x10], edx
push edi
call fcn.10021c30
mov eax, dword [esp + 0x1c]
add esp, 4
cmp eax, ebx
je 0x10015307
mov dword [esi + 0x2c], 0xffffffff
mov dword [esp + 0x10], ebx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], ebx
cmp dword [esi + 0x8c8], ebx
je 0x1001535b
mov ecx, dword [esi + 0x8d0]
mov edx, dword [esi + 0x8d4]
mov dword [esi + 0x40], ecx
jmp 0x1001536a
cmp dword [esi + 0x8c8], ebx
je 0x10015318
mov dword [esi + 0x2c], 0xffffffff
jmp 0x100152ee
mov eax, dword [edi + 0x48]
push eax
push ebp
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push ebp
call fcn.10016ee0
add esp, 4
push ebx
push 0x80
push 3
push ebx
push 3
push 0x80000000
push ebp
call dword [sym.imp.KERNEL32.dll_CreateFileA]
cmp eax, 0xffffffff
mov dword [esi + 0x2c], eax
jne 0x100152ee
pop edi
pop esi
pop ebp
mov eax, 0x12
pop ebx
add esp, 0xaa4
ret
mov eax, dword [esi + 0x2c]
push eax
call fcn.10022170
add esp, 4
mov dword [esi + 0x40], eax
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
or ecx, eax
mov dword [esi + 0x44], edx
mov ebp, 8
jne 0x10015382
xor ecx, ecx
jmp 0x1001538d
mov ecx, dword [esp + 0x10]
cmp ecx, 0xffffffff
jne 0x10015391
mov ecx, ebp
mov dword [esp + 0x10], ecx
mov eax, dword [esi + 0x92c]
mov dword [esi + 0xb7a4], 1
cmp eax, ebx
je 0x100153b2
mov word [edi], 0x2d
mov word [edi + 2], 0x2d
jmp 0x100153e9
cmp dword [esi + 0x4e60], ebx
je 0x100153c1
mov eax, 0x14
jmp 0x100153cc
xor eax, eax
cmp ecx, 9
sete al
add eax, 0x14
cmp ecx, ebx
mov word [edi], ax
jne 0x100153da
mov eax, 0xa
jmp 0x100153e5
xor eax, eax
cmp ecx, 9
sete al
add eax, 0x14
mov word [edi + 2], ax
mov eax, dword [edi + 8]
mov edx, dword [esp + 0x18]
shl eax, 0x10
mov word [edi + 4], bp
cmp edx, ebx
mov dword [edi + 0xc], eax
cmp dword [esi + 0x4e88], ebx
mov ecx, 0xfff7
je 0x1001544e
mov word [edi + 4], 9
test byte [esi + 0x4ef5], 0x80
jne 0x1001543d
cmp dword [esi + 0x8c4], ebx
jne 0x1001543d
cmp edx, ebx
jne 0x10015437
mov dword [esi + 0xb7a0], ebx
mov dword [edi + 0xc], ebx
mov dword [esi + 0xb7a4], 1
and word [edi + 4], cx
jmp 0x1001544e
cmp edx, ebx
jne 0x1001544e
mov dword [edi + 0xc], eax
mov dword [esi + 0xb7a4], ebx
or word [edi + 4], bp
mov dword [esi + 0x38], ebx
mov dword [esi + 0xb79c], ebx
mov dword [esi + 0x3c], ebx
mov dword [edi + 0x30], ebx
test byte [esi + 0x4ef5], 0x80
je 0x100154ad
mov eax, dword [esi + 0x4ef8]
cmp edx, ebx
mov dword [edi + 0x30], eax
jne 0x100154ad
cmp dword [esp + 0x10], ebx
jne 0x100154ad
and word [edi + 4], cx
mov ecx, dword [esi + 0x2c]
push esi
push ecx
call fcn.10016cc0
mov dword [edi + 0xc], eax
mov eax, dword [esi + 0xa0]
add esp, 8
cmp eax, ebx
je 0x100154a7
pop edi
pop esi
pop ebp
mov eax, 9
pop ebx
add esp, 0xaa4
ret
mov dword [esi + 0x38], ebx
mov dword [esi + 0x3c], ebx
mov eax, dword [esp + 0x10]
mov dx, word [edi + 4]
mov ecx, dword [esp + 0x24]
cmp eax, ebx
mov word [edi + 0x36], dx
mov word [edi + 6], ax
jne 0x100154db
cmp ecx, ebx
jl 0x100154db
jg 0x100154d1
cmp dword [esp + 0x20], ebx
jb 0x100154db
mov ebp, dword [esp + 0x20]
mov edx, ecx
mov eax, ebp
jmp 0x100154e3
mov ebp, dword [esp + 0x20]
xor eax, eax
xor edx, edx
mov dword [edi + 0x10], eax
cmp ecx, ebx
mov dword [edi + 0x14], edx
jl 0x100154f7
jg 0x100154f3
cmp ebp, ebx
jb 0x100154f7
mov eax, ebp
jmp 0x100154fb
xor eax, eax
xor ecx, ecx
cmp word [edi + 0x34], 0xffff
mov dword [edi + 0x18], eax
mov dword [edi + 0x1c], ecx
jne 0x10015515
mov word [edi + 0x34], bx
mov dword [esp + 0x2c], 1
mov eax, dword [esi + 0x4e60]
cmp eax, ebx
mov eax, dword [esp + 0x28]
je 0x10015528
and eax, 0xff
mov dword [edi + 0x38], eax
mov eax, dword [esi + 0x4ec0]
mov dword [edi + 0x40], eax
mov ecx, dword [esi + 0x4ec4]
mov dword [edi + 0x44], ecx
mov eax, dword [esi + 0x938]
cmp eax, ebx
je 0x1001563d
test byte [esi + 0x4ef5], 0x10
jne 0x1001563d
mov edx, dword [edi + 0x58]
mov ebx, dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea eax, [esp + 0x60]
push edx
push eax
call ebx
mov ecx, dword [edi + 0x48]
lea edx, [esp + 0x170]
push ecx
push edx
call ebx
mov eax, dword [edi + 8]
mov edx, dword [esi + 0x93c]
mov ebx, dword [edi + 0x38]
xor ecx, ecx
mov cx, word [edi + 8]
push edx
shr eax, 0x10
mov dword [esp + 0x168], eax
lea eax, [esp + 0x64]
push eax
mov dword [esp + 0x170], ecx
mov dword [esp + 0x174], ebx
call dword [esi + 0x938]
mov ebp, dword [sym.imp.KERNEL32.dll_lstrlenA]
lea ecx, [esp + 0x60]
push ecx
call ebp
mov edx, eax
mov eax, dword [edi + 0x58]
push eax
mov dword [esp + 0x38], edx
call ebp
mov ecx, dword [esp + 0x34]
cmp ecx, eax
jle 0x100155f0
mov edx, dword [edi + 0x58]
push edx
call fcn.10039f0f
add esp, 4
lea eax, [esp + 0x60]
push eax
call ebp
add eax, 2
push eax
call fcn.10039ff8
add esp, 4
mov dword [edi + 0x58], eax
mov edx, dword [edi + 0x58]
lea ecx, [esp + 0x60]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov eax, dword [edi + 0x58]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ebp, dword [esp + 0x16c]
mov ecx, dword [esp + 0x168]
mov edx, dword [esp + 0x164]
mov dword [edi + 0x20], eax
mov eax, ebx
and ecx, 0xffff
xor eax, ebp
shl edx, 0x10
and eax, 0x27
add ecx, edx
xor eax, ebx
mov dword [edi + 8], ecx
mov dword [edi + 0x38], eax
xor ebx, ebx
cmp word [esi + 0x4ef4], bx
je 0x10015696
cmp dword [esi + 0x4e88], ebx
je 0x10015696
cmp dword [esp + 0x10], ebx
jne 0x10015696
mov ebx, dword [edi + 0x10]
mov ebp, dword [esp + 0xabc]
add ebx, 0xc
push esi
mov dword [edi + 0x10], ebx
mov edx, dword [edi + 0x14]
adc edx, 0
push ebp
push edi
mov dword [edi + 0x14], edx
call fcn.100193d0
add esp, 0xc
test eax, eax
jne 0x10016007
mov ecx, dword [edi + 0x10]
add ecx, 0xfffffff4
mov dword [edi + 0x10], ecx
mov eax, dword [edi + 0x14]
adc eax, 0xffffffff
xor ebx, ebx
mov dword [edi + 0x14], eax
jmp 0x100156b2
mov ebp, dword [esp + 0xabc]
push esi
push ebp
push edi
call fcn.100193d0
xor ebx, ebx
add esp, 0xc
cmp eax, ebx
jne 0x10016007
mov ecx, dword [edi + 0x60]
mov edx, dword [edi + 0x20]
add ecx, edx
mov edx, dword [edi + 0x24]
lea eax, [ecx + edx + 0x1e]
mov ecx, dword [esi + 0x4ec0]
add ecx, eax
mov eax, dword [esi + 0x4e88]
mov dword [esi + 0x4ec0], ecx
mov edx, dword [esi + 0x4ec4]
adc edx, ebx
cmp eax, ebx
mov dword [esi + 0x4ec4], edx
je 0x10015765
mov ecx, dword [edi + 0xc]
push esi
push ebp
push ecx
push eax
call fcn.10022270
mov ebx, eax
add esp, 0x10
test ebx, ebx
je 0x1001572d
push esi
push 0
push 0x188
call fcn.10020fb0
add esp, 8
push eax
push ebx
call fcn.1001b780
mov edx, dword [esi + 0x2c]
add esp, 0xc
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [esi]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xaa4
ret
mov eax, dword [edi + 0x10]
mov ecx, 0xc
add eax, ecx
mov dword [edi + 0x10], eax
mov ebx, dword [edi + 0x14]
mov eax, 0
adc ebx, eax
mov dword [edi + 0x14], ebx
mov edx, dword [esi + 0x4ec0]
add edx, ecx
mov dword [esi + 0x4ec0], edx
mov ecx, dword [esi + 0x4ec4]
adc ecx, eax
xor ebx, ebx
mov dword [esi + 0x4ec4], ecx
mov eax, dword [ebp]
push 1
push ebx
push ebx
push eax
call fcn.100348d0
push esi
push ebx
mov dword [esi + 0x38], ebx
push ebx
mov dword [esi + 0x3c], ebx
call fcn.10016e60
add esp, 0x1c
mov dword [esi + 0xb7a0], eax
test byte [esi + 0x4ef5], 0x80
je 0x100157ba
mov ecx, dword [esi + 0x4e90]
push esi
push ecx
call fcn.1001f260
mov dword [esi + 0x8b8], eax
mov dword [esi + 0x4f18], ebx
add esp, 8
mov dword [esi + 0x8bc], edx
mov dword [esi + 0x4f1c], ebx
mov eax, dword [esp + 0x10]
cmp eax, 9
jne 0x10015834
mov edx, dword [ebp]
push esi
push edx
call fcn.10026160
add esp, 8
test eax, eax
jne 0x10015c7b
cmp dword [esp + 0x2c], ebx
je 0x100157e4
mov word [edi + 0x34], 0xffff
lea eax, [esp + 0x10]
push esi
push eax
lea eax, [edi + 0x34]
push eax
call fcn.10024e00
mov ecx, dword [esi + 0x4e68]
lea ebx, [edi + 4]
push esi
push ebx
push ecx
call fcn.10026350
mov dl, byte [ebx]
mov al, byte [edi + 0x36]
xor dl, al
push esi
and edx, 6
xor word [edi + 0x36], dx
call fcn.100269b0
push esi
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], edx
call fcn.10022b20
mov eax, dword [esi + 4]
add esp, 0x20
mov dword [ebp], eax
jmp 0x10015995
cmp eax, 8
jne 0x100158aa
mov ecx, dword [ebp]
push esi
push ecx
call fcn.10026160
add esp, 8
test eax, eax
jne 0x10015c7b
cmp dword [esp + 0x2c], ebx
je 0x1001585a
mov word [edi + 0x34], 0xffff
lea edx, [esp + 0x10]
push esi
lea eax, [edi + 0x34]
push edx
push eax
call fcn.10023660
mov eax, dword [esi + 0x4e68]
lea ebx, [edi + 4]
push esi
push ebx
push eax
call fcn.10022be0
mov cl, byte [ebx]
mov al, byte [edi + 0x36]
xor cl, al
push esi
and ecx, 6
xor word [edi + 0x36], cx
call fcn.10023260
push esi
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], edx
call fcn.10022b20
mov edx, dword [esi + 4]
add esp, 0x20
mov dword [ebp], edx
jmp 0x10015995
push 0x2000
call fcn.10039ff8
mov ebx, eax
add esp, 4
test ebx, ebx
jne 0x100158cd
pop edi
pop esi
pop ebp
mov eax, 4
pop ebx
add esp, 0xaa4
ret
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x1001597e
mov eax, dword [esi + 0x44]
mov ecx, dword [esi + 0x40]
mov edx, dword [esp + 0x40]
push 0
push 0
push eax
push ecx
push edx
call fcn.100136a0
mov eax, dword [esi + 0xa0]
add esp, 0x14
test eax, eax
jne 0x10015978
mov eax, dword [esi + 0x8c8]
push esi
test eax, eax
push 0x2000
push ebx
je 0x1001591f
call fcn.100168d0
xor ecx, ecx
add esp, 0xc
mov dword [esp + 0x14], eax
cmp ecx, eax
jmp 0x1001592f
call fcn.100167c0
xor edx, edx
add esp, 0xc
mov dword [esp + 0x14], eax
cmp edx, eax
sbb eax, eax
neg eax
test eax, eax
je 0x10015967
mov eax, dword [esp + 0xabc]
mov ecx, dword [esp + 0x14]
xor ebp, ebp
push esi
push eax
push ebp
push ecx
push ebx
call fcn.10022570
mov ecx, dword [esp + 0x28]
add esp, 0x14
cmp eax, ecx
jne 0x100159b1
cmp edx, ebp
jne 0x100159b1
mov eax, dword [esi + 0xa0]
test eax, eax
je 0x100158fc
mov eax, dword [esi + 0xa0]
mov ebp, dword [esp + 0xabc]
test eax, eax
je 0x1001597e
mov dword [esi], 9
push ebx
call fcn.10039f0f
mov eax, dword [esi + 0x38]
mov ecx, dword [esi + 0x3c]
add esp, 4
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ecx
cmp dword [esi], 0
je 0x100159f7
mov edx, dword [esi + 0x2c]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [esi]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xaa4
ret
push ebx
call fcn.10039f0f
mov edx, dword [esi + 0x2c]
add esp, 4
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test byte [esi + 0x4ef5], 0x80
je 0x100159e7
mov eax, dword [esi + 0xa0]
pop edi
neg eax
sbb eax, eax
pop esi
and al, 0xfb
pop ebp
add eax, 0xe
pop ebx
add esp, 0xaa4
ret
pop edi
pop esi
pop ebp
mov eax, 0xa
pop ebx
add esp, 0xaa4
ret
mov eax, dword [esi + 0x2c]
cmp eax, 0xffffffff
je 0x10015a16
cmp dword [esp + 0x14], 0xffffffff
je 0x10015eaa
cmp eax, 0xffffffff
je 0x10015a16
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test byte [esi + 0x4ef5], 0x80
je 0x10015a51
mov eax, dword [esi + 0x4f18]
mov edx, dword [esi + 0x4ec0]
mov ecx, dword [esi + 0x4f1c]
add edx, eax
mov dword [esi + 0x4ec0], edx
mov eax, dword [esi + 0x4ec4]
adc eax, ecx
mov ecx, dword [esp + 0x1c]
mov dword [esi + 0x4ec4], eax
mov eax, dword [esp + 0x18]
jmp 0x10015a75
mov eax, dword [esp + 0x18]
mov ebx, dword [esi + 0x4ec0]
mov ecx, dword [esp + 0x1c]
add ebx, eax
mov dword [esi + 0x4ec0], ebx
mov edx, dword [esi + 0x4ec4]
adc edx, ecx
mov dword [esi + 0x4ec4], edx
mov ebx, dword [esi + 0x4ec0]
mov edx, dword [esi + 0x4ec4]
cmp dword [esi + 0x92c], 0
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], edx
je 0x10015a9b
cmp dword [esi + 0x930], 0
je 0x10015ad1
test edx, edx
jl 0x10015ad1
jg 0x10015aa6
cmp ebx, 0xffffffff
jb 0x10015ad1
push esi
push 0
push 0x10e
call fcn.10020fb0
add esp, 8
push eax
push 0xe
call fcn.1001b780
add esp, 0xc
mov eax, 0xe
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xaa4
ret
mov edx, dword [esi + 0xb7a0]
mov dword [edi + 0x10], eax
mov dword [edi + 0xc], edx
mov dword [edi + 0x14], ecx
mov edx, dword [esi + 0x4e88]
test edx, edx
je 0x10015af6
add eax, 0xc
adc ecx, 0
mov dword [edi + 0x10], eax
mov dword [edi + 0x14], ecx
mov eax, dword [esi + 0x8c4]
test eax, eax
je 0x10015b4e
cmp dword [esi + 0x4e6c], 1
jne 0x10015b15
mov eax, dword [esi + 0x38]
cdq
mov dword [edi + 0x18], eax
mov dword [edi + 0x1c], edx
jmp 0x10015b5a
mov eax, dword [esi + 0x92c]
test eax, eax
je 0x10015b36
mov eax, dword [esi + 0x8f8]
mov ecx, dword [esi + 0x8fc]
and ecx, 0x7fffffff
mov dword [edi + 0x18], eax
jmp 0x10015b57
mov edx, dword [esi + 0x8f8]
and edx, 0x7fffffff
mov dword [edi + 0x18], edx
mov dword [edi + 0x1c], 0
jmp 0x10015b5a
mov eax, dword [esi + 0x38]
mov dword [edi + 0x18], eax
mov ecx, dword [esi + 0x3c]
mov dword [edi + 0x1c], ecx
test byte [esi + 0x4ef5], 0x80
jne 0x10015eba
mov edx, dword [edi + 0x44]
mov eax, dword [edi + 0x40]
mov ecx, dword [ebp]
push 0
push edx
push eax
push ecx
call fcn.100348d0
and eax, edx
add esp, 0x10
cmp eax, 0xffffffff
je 0x10015e8f
mov eax, dword [esi + 0x8c4]
mov ebx, dword [edi + 0xc]
test eax, eax
mov dword [esp + 0x2c], ebx
jne 0x10015ba8
mov eax, 0xfff7
and word [edi + 0x36], ax
and word [edi + 4], ax
jmp 0x10015bbb
mov eax, dword [esi + 0x4e88]
test eax, eax
je 0x10015bbb
mov edx, dword [edi + 8]
shl edx, 0x10
mov dword [edi + 0xc], edx
mov eax, dword [esp + 0x10]
mov word [edi + 6], ax
mov ecx, dword [esi + 0x92c]
test ecx, ecx
je 0x10015bd5
mov word [edi + 2], 0x2d
jmp 0x10015bf1
test eax, eax
jne 0x10015be0
mov eax, 0xa
jmp 0x10015bed
xor ecx, ecx
cmp eax, 9
sete cl
add ecx, 0x14
mov eax, ecx
mov word [edi + 2], ax
push esi
push ebp
push edi
call fcn.100193d0
add esp, 0xc
test eax, eax
je 0x10015c0e
mov dword [edi + 0xc], ebx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xaa4
ret
mov eax, dword [esi + 0xb7a4]
test eax, eax
je 0x10015e6d
mov eax, dword [esi + 0x4e88]
test eax, eax
je 0x10015e63
mov edx, dword [edi + 0xc]
push esi
push ebp
push edx
push eax
call fcn.10022270
mov ebx, eax
add esp, 0x10
test ebx, ebx
je 0x10015c66
push esi
push 0
push 0x188
call fcn.10020fb0
add esp, 8
push eax
push ebx
call fcn.1001b780
add esp, 0xc
mov eax, ebx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xaa4
ret
push 0x2000
call fcn.10039ff8
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
jne 0x10015c8b
pop edi
pop esi
pop ebp
mov eax, 4
pop ebx
add esp, 0xaa4
ret
mov eax, dword [ebp]
xor ebx, ebx
push 1
push ebx
push ebx
push eax
call fcn.100348d0
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x2c]
add esp, 0x10
mov dword [esp + 0x44], ebx
mov dword [esp + 0x48], ebx
mov ebx, dword [esp + 0x18]
test eax, eax
mov dword [esp + 0x3c], edx
jl 0x10015cd2
jg 0x10015cc3
cmp ebx, 0x2000
jbe 0x10015cd2
mov ebx, 0x2000
mov dword [esp + 0x50], 0
jmp 0x10015cd6
mov dword [esp + 0x50], eax
cmp dword [esi], 0
jne 0x10015e4b
mov eax, dword [esp + 0x50]
test eax, eax
jl 0x10015e4b
jg 0x10015cf5
test ebx, ebx
jbe 0x10015e4b
mov eax, dword [esp + 0xabc]
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x30]
push 0
push ecx
mov ecx, dword [eax]
push ebx
push edx
push ecx
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x10015e3c
mov eax, dword [esp + 0x30]
test eax, eax
jbe 0x10015e3c
xor ebp, ebp
test eax, eax
jle 0x10015d61
push esi
call fcn.100221b0
mov edx, dword [esp + 0x18]
mov dword [esp + 0x38], eax
push esi
movsx eax, byte [edx + ebp]
push eax
call fcn.100221d0
mov eax, dword [esp + 0x20]
mov cl, byte [esp + 0x40]
add esp, 0xc
mov dl, byte [eax + ebp]
xor dl, cl
mov byte [eax + ebp], dl
mov eax, dword [esp + 0x30]
inc ebp
cmp ebp, eax
jl 0x10015d2c
mov ebp, dword [esp + 0xabc]
mov edx, dword [esp + 0x3c]
mov eax, dword [esp + 0x38]
push 0
mov ecx, dword [ebp]
push edx
push eax
push ecx
call fcn.100348d0
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x24]
add esp, 0x10
lea edx, [esp + 0x5c]
push 0
push edx
mov edx, dword [ebp]
push eax
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x10015e34
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x30]
cmp eax, ecx
jne 0x10015e34
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x3c]
add edx, ebx
adc ecx, eax
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x48]
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x44]
add ecx, ebx
adc edx, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x44], ecx
sub eax, ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x48], edx
sbb ecx, edx
js 0x10015e05
jg 0x10015df6
cmp eax, 0x2000
jbe 0x10015e05
mov ebx, 0x2000
mov dword [esp + 0x50], 0
jmp 0x10015e0b
mov ebx, eax
mov dword [esp + 0x50], ecx
mov ecx, dword [esi + 0x44]
mov eax, dword [esi + 0x40]
push ecx
push eax
push ecx
mov ecx, dword [esp + 0x4c]
push eax
push ecx
call fcn.100136a0
mov eax, dword [esi + 0xa0]
add esp, 0x14
test eax, eax
je 0x10015e42
mov dword [esi], 9
jmp 0x10015e42
mov dword [esi], 0xe
jmp 0x10015e42
mov dword [esi], 0xb
cmp dword [esi], 0
je 0x10015cdf
mov edx, dword [esp + 0x14]
push edx
call fcn.10039f0f
mov ebp, dword [esp + 0xac0]
mov ebx, dword [esp + 0x30]
add esp, 4
mov eax, dword [esi]
test eax, eax
jne 0x10016007
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x54]
mov dword [edi + 0xc], ebx
mov edx, dword [ebp]
push 0
push eax
push ecx
push edx
call fcn.100348d0
and eax, edx
add esp, 0x10
cmp eax, 0xffffffff
jne 0x10015eba
push esi
push 0
push 0x189
call fcn.10020fb0
add esp, 8
push eax
push 0xb
call fcn.1001b780
add esp, 0xc
pop edi
pop esi
pop ebp
mov eax, 0xb
pop ebx
add esp, 0xaa4
ret
xor ebx, ebx
test byte [esi + 0x4ef5], 0x80
jne 0x10015ecd
cmp dword [esi + 0x8c4], ebx
je 0x10015f20
mov eax, dword [esp + 0x10]
cmp eax, 8
je 0x10015ee1
cmp eax, 9
je 0x10015ee1
test byte [edi + 4], 8
je 0x10015f20
push esi
push ebp
push edi
call fcn.10019990
add esp, 0xc
cmp eax, ebx
jne 0x10016007
mov eax, dword [esi + 0x92c]
mov ecx, dword [esi + 0x4ec0]
cmp eax, ebx
je 0x10015f09
add ecx, 0x18
jmp 0x10015f0c
add ecx, 0x10
mov dword [esi + 0x4ec0], ecx
mov eax, dword [esi + 0x4ec4]
adc eax, ebx
mov dword [esi + 0x4ec4], eax
cmp dword [edi + 0x24], ebx
je 0x10015f3b
mov eax, dword [edi + 0x4c]
mov ecx, dword [edi + 0x50]
cmp eax, ecx
je 0x10015f38
push eax
call fcn.10039f0f
add esp, 4
mov dword [edi + 0x24], ebx
cmp dword [esi + 0x8c8], ebx
je 0x10015f6e
mov eax, dword [esp + 0x40]
push eax
push 2
push 0x2c1
call fcn.10020fb0
add esp, 8
lea ecx, [esp + 0x278]
push eax
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
jmp 0x10015ff5
cmp dword [esi + 0x918], ebx
je 0x10015fc3
cmp dword [esi + 0x91c], ebx
je 0x10015fc3
mov edx, dword [edi + 0x48]
lea eax, [esp + 0x274]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea ecx, [esp + 0x274]
push ecx
call fcn.10016ee0
add esp, 4
lea edx, [esp + 0x274]
push edx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
and al, 0xdf
mov dword [esp + 0x28], eax
push eax
lea eax, [esp + 0x278]
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
mov ecx, dword [edi + 0x48]
push ecx
push 2
push 0x2bf
call fcn.10020fb0
add esp, 8
lea edx, [esp + 0x278]
push eax
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
lea eax, [esp + 0x280]
push eax
call fcn.10016ee0
add esp, 0x10
lea ecx, [esp + 0x274]
push ecx
call fcn.10014b10
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xaa4
ret