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

Disassembly:
mov eax, 0x1abc
call fcn.004ad6f0
push ebx
push ebp
push esi
mov esi, dword [esp + 0x1ad4]
xor ebx, ebx
push edi
mov edi, dword [esp + 0x1ad0]
mov dword [esi + 0x3e14], 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 + 0xb84c]
push ecx
push eax
mov dword [esp + 0x28], ebx
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], 0xfffffffd
mov dword [esp + 0x24], 0xffffffff
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x48], eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov eax, dword [esi + 0x8c8]
lea ebp, [esi + 0xc860]
cmp eax, ebx
je 0x4765b8
push ebx
push 0x18b
call fcn.00484c20
jmp 0x4765d4
mov edx, dword [esi + 0x5730]
mov eax, dword [esi + 0x3e34]
push edx
push eax
push ebx
push 0x187
call fcn.00484c20
add esp, 8
push eax
push ebp
call dword [sym.imp.USER32.dll_wsprintfA]
mov eax, dword [esi + 0x3e34]
add esp, 0x10
lea ecx, [eax + 1]
push eax
mov dword [esi + 0x3e34], ecx
mov edx, dword [esi + 0x5730]
push edx
push ebp
call fcn.00474710
add esp, 0xc
test eax, eax
je 0x476613
pop edi
pop esi
pop ebp
mov eax, 9
pop ebx
add esp, 0x1abc
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 + 0x30], edx
je 0x476669
lea eax, [esp + 0x1c]
lea ecx, [esp + 0x24]
push eax
push ecx
push ebx
call fcn.0047ded0
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x28]
add esp, 0x10
mov dword [edi + 8], eax
mov dword [esp + 0x2c], ebx
jmp 0x4766f3
mov ecx, dword [edi + 0x48]
lea edx, [esp + 0x1c]
lea eax, [esp + 0x24]
push edx
push eax
push ecx
call fcn.0047ded0
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
add esp, 0x10
cmp eax, ebx
je 0x476697
cmp edx, 0xffffffff
jg 0x4766b1
jl 0x476697
cmp ecx, 0xfffffffe
jae 0x4766b1
cmp ecx, 0xfffffffd
jne 0x4766a1
cmp edx, 0xffffffff
je 0x4766b1
pop edi
pop esi
pop ebp
mov eax, 0x12
pop ebx
add esp, 0x1abc
ret
mov dword [edi + 8], eax
mov eax, dword [esi + 0x918]
cmp eax, ebx
je 0x4766d0
cmp dword [esi + 0x91c], ebx
je 0x4766d0
mov eax, dword [esp + 0x20]
and al, 0xdf
mov dword [esp + 0x20], eax
cmp dword [esi + 0x92c], ebx
je 0x4766e0
cmp dword [esi + 0x930], ebx
je 0x4766f3
cmp edx, ebx
jl 0x4766f3
jg 0x477547
cmp ecx, 0xffffffff
jae 0x477547
mov ax, word [esi + 0x5734]
test ah, 0x80
je 0x47672f
test ah, 0x10
je 0x47672f
cmp dword [esi + 0x938], ebx
jne 0x476714
cmp dword [esi + 0x93c], ebx
je 0x47672f
cmp dword [esi + 0x5880], ebx
je 0x47672f
mov eax, dword [esi + 0x5884]
mov dword [edi + 8], eax
mov eax, dword [esi + 0x5888]
mov dword [esp + 0x20], eax
cmp ecx, 0xfffffffe
jne 0x476749
cmp edx, 0xffffffff
jne 0x476749
mov dword [esp + 0x2c], 1
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], ebx
mov eax, dword [esi + 0x4e9c]
mov dword [esi + 0x30], 0xffffffff
cmp eax, ebx
mov dword [esi + 0x68], ebx
je 0x476774
mov ecx, dword [edi + 0x48]
push eax
push ecx
call fcn.00476440
add esp, 8
test eax, eax
je 0x476774
mov dword [esp + 0x10], ebx
jmp 0x47677e
mov edx, dword [esi + 0x4e78]
mov dword [esp + 0x10], edx
push edi
call fcn.0047e170
mov eax, dword [esp + 0x30]
add esp, 4
cmp eax, ebx
je 0x4767bb
mov dword [esi + 0x2c], 0xffffffff
mov dword [esp + 0x10], ebx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], ebx
cmp dword [esi + 0x8c8], ebx
je 0x476815
mov ecx, dword [esi + 0x8d0]
mov edx, dword [esi + 0x8d4]
mov dword [esi + 0x40], ecx
jmp 0x476824
cmp dword [esi + 0x8c8], ebx
je 0x4767cc
mov dword [esi + 0x2c], 0xffffffff
jmp 0x4767a2
mov eax, dword [edi + 0x48]
push eax
push ebp
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push ebp
call fcn.00478590
add esp, 4
push ebx
push 0x80
push 3
push ebx
push 3
push SysReAllocString
push ebp
call dword [sym.imp.KERNEL32.dll_CreateFileA]
cmp eax, 0xffffffff
mov dword [esi + 0x2c], eax
jne 0x4767a2
call dword [sym.imp.KERNEL32.dll_GetLastError]
pop edi
pop esi
pop ebp
mov eax, 0x12
pop ebx
add esp, 0x1abc
ret
mov eax, dword [esi + 0x2c]
push eax
call fcn.0047e720
add esp, 4
mov dword [esi + 0x40], eax
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
or ecx, eax
mov dword [esi + 0x44], edx
mov ebp, 8
jne 0x47683c
xor ecx, ecx
jmp 0x476847
mov ecx, dword [esp + 0x10]
cmp ecx, 0xffffffff
jne 0x47684b
mov ecx, ebp
mov dword [esp + 0x10], ecx
mov eax, dword [esi + 0x92c]
mov dword [esi + 0xc054], 1
cmp eax, ebx
je 0x47686c
mov word [edi], 0x2d
mov word [edi + 2], 0x2d
jmp 0x4768a3
cmp dword [esi + 0x4e7c], ebx
je 0x47687b
mov eax, 0x14
jmp 0x476886
xor eax, eax
cmp ecx, 9
sete al
add eax, 0x14
cmp ecx, ebx
mov word [edi], ax
jne 0x476894
mov eax, 0xa
jmp 0x47689f
xor eax, eax
cmp ecx, 9
sete al
add eax, 0x14
mov word [edi + 2], ax
cmp dword [esi + 0x928], ebx
je 0x4768b9
mov dl, byte [edi]
and edx, 0xff
or dh, 0xb
mov word [edi], dx
mov eax, dword [edi + 8]
mov edx, dword [esp + 0x2c]
shl eax, 0x10
mov word [edi + 4], bp
cmp edx, ebx
mov dword [edi + 0xc], eax
cmp dword [esi + 0x4ea0], ebx
mov ecx, 0xfff7
je 0x47691e
mov word [edi + 4], 9
test byte [esi + 0x5735], 0x80
jne 0x47690d
cmp dword [esi + 0x8c4], ebx
jne 0x47690d
cmp edx, ebx
jne 0x476907
mov dword [esi + 0xc050], ebx
mov dword [edi + 0xc], ebx
mov dword [esi + 0xc054], 1
and word [edi + 4], cx
jmp 0x47691e
cmp edx, ebx
jne 0x47691e
mov dword [edi + 0xc], eax
mov dword [esi + 0xc054], ebx
or word [edi + 4], bp
mov dword [esi + 0x38], ebx
mov dword [esi + 0xc04c], ebx
mov dword [esi + 0x3c], ebx
mov dword [edi + 0x30], ebx
test byte [esi + 0x5735], 0x80
je 0x47697d
mov eax, dword [esi + 0x5738]
cmp edx, ebx
mov dword [edi + 0x30], eax
jne 0x47697d
cmp dword [esp + 0x10], ebx
jne 0x47697d
and word [edi + 4], cx
mov ecx, dword [esi + 0x2c]
push esi
push ecx
call fcn.00478370
mov dword [edi + 0xc], eax
mov eax, dword [esi + 0xa0]
add esp, 8
cmp eax, ebx
je 0x476977
pop edi
pop esi
pop ebp
mov eax, 9
pop ebx
add esp, 0x1abc
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 + 0x1c]
cmp eax, ebx
mov word [edi + 0x36], dx
mov word [edi + 6], ax
jne 0x4769ab
cmp ecx, ebx
jl 0x4769ab
jg 0x4769a1
cmp dword [esp + 0x18], ebx
jb 0x4769ab
mov ebp, dword [esp + 0x18]
mov edx, ecx
mov eax, ebp
jmp 0x4769b3
mov ebp, dword [esp + 0x18]
xor eax, eax
xor edx, edx
mov dword [edi + 0x10], eax
cmp ecx, ebx
mov dword [edi + 0x14], edx
jl 0x4769c7
jg 0x4769c3
cmp ebp, ebx
jb 0x4769c7
mov eax, ebp
jmp 0x4769cb
xor eax, eax
xor ecx, ecx
cmp word [edi + 0x34], 0xffff
mov dword [edi + 0x18], eax
mov dword [edi + 0x1c], ecx
jne 0x4769e5
mov word [edi + 0x34], bx
mov dword [esp + 0x34], 1
mov eax, dword [esi + 0x4e7c]
cmp eax, ebx
mov eax, dword [esp + 0x20]
je 0x4769f8
and eax, 0xff
mov dword [edi + 0x38], eax
mov eax, dword [esi + 0x5700]
mov dword [edi + 0x40], eax
mov ecx, dword [esi + 0x5704]
mov dword [edi + 0x44], ecx
mov eax, dword [esi + 0x938]
cmp eax, ebx
jne 0x476a23
cmp dword [esi + 0x93c], ebx
je 0x476c5f
test byte [esi + 0x5735], 0x10
jne 0x476c5f
mov eax, dword [esi + 0x944]
test eax, eax
jne 0x476c5f
mov eax, dword [esi + 0x948]
test eax, eax
jne 0x476c5f
mov eax, dword [esi + 0x954]
test eax, eax
je 0x476b7c
mov edx, dword [edi + 0x58]
mov ebx, dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea eax, [esp + 0xab8]
push edx
push eax
mov dword [esp + 0xabc], 0x1018
call ebx
mov ecx, dword [edi + 0x48]
lea edx, [esp + 0x12c4]
push ecx
push edx
call ebx
mov eax, dword [edi + 8]
mov edx, dword [edi + 0x18]
mov ebx, dword [edi + 0x38]
xor ecx, ecx
mov cx, word [edi + 8]
mov dword [esp + 0x1ac4], edx
shr eax, 0x10
mov dword [esp + 0x12b8], eax
mov dword [esp + 0x12bc], ecx
mov eax, edx
mov edx, dword [edi + 0x1c]
mov ecx, 0x20
mov dword [esp + 0x12c0], ebx
call fcn.004b56a0
mov dword [esp + 0x1ac8], eax
mov eax, dword [esi + 0x940]
lea ecx, [esp + 0xab4]
push eax
push ecx
call dword [esi + 0x93c]
mov ebp, dword [sym.imp.KERNEL32.dll_lstrlenA]
lea edx, [esp + 0xab8]
push edx
call ebp
mov edx, eax
mov eax, dword [edi + 0x58]
push eax
mov dword [esp + 0x3c], edx
call ebp
mov ecx, dword [esp + 0x38]
cmp ecx, eax
jle 0x476b29
mov edx, dword [edi + 0x58]
push edx
call fcn.004ad74d
add esp, 4
lea eax, [esp + 0xab8]
push eax
call ebp
add eax, 2
push eax
call fcn.004adbfa
add esp, 4
mov dword [edi + 0x58], eax
mov edx, dword [edi + 0x58]
lea ecx, [esp + 0xab8]
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 + 0x12c0]
mov ecx, dword [esp + 0x12bc]
mov edx, dword [esp + 0x12b8]
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
jmp 0x476c5f
mov ecx, dword [edi + 0x58]
mov ebx, dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea edx, [esp + 0x60]
push ecx
push edx
call ebx
mov eax, dword [edi + 0x48]
lea ecx, [esp + 0x170]
push eax
push ecx
call ebx
mov edx, dword [edi + 8]
mov ecx, dword [esi + 0x940]
mov ebx, dword [edi + 0x38]
xor eax, eax
mov ax, word [edi + 8]
push ecx
shr edx, 0x10
mov dword [esp + 0x168], edx
lea edx, [esp + 0x64]
push edx
mov dword [esp + 0x170], eax
mov dword [esp + 0x174], ebx
call dword [esi + 0x938]
mov ebp, dword [sym.imp.KERNEL32.dll_lstrlenA]
lea eax, [esp + 0x60]
push eax
call ebp
mov ecx, dword [edi + 0x58]
mov edx, eax
push ecx
mov dword [esp + 0x3c], edx
call ebp
mov edx, dword [esp + 0x38]
cmp edx, eax
jle 0x476c14
mov eax, dword [edi + 0x58]
push eax
call fcn.004ad74d
add esp, 4
lea ecx, [esp + 0x60]
push ecx
call ebp
add eax, 2
push eax
call fcn.004adbfa
add esp, 4
mov dword [edi + 0x58], eax
mov eax, dword [edi + 0x58]
lea edx, [esp + 0x60]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov ecx, dword [edi + 0x58]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ebp, dword [esp + 0x16c]
mov edx, dword [esp + 0x168]
mov dword [edi + 0x20], eax
mov eax, dword [esp + 0x164]
mov ecx, ebx
and edx, 0xffff
xor ecx, ebp
shl eax, 0x10
and ecx, 0x27
add edx, eax
xor ecx, ebx
mov dword [edi + 8], edx
mov dword [edi + 0x38], ecx
cmp word [esi + 0x5734], 0
je 0x476cbb
mov eax, dword [esi + 0x4ea0]
test eax, eax
je 0x476cbb
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x476cbb
mov ebx, dword [edi + 0x10]
mov ebp, dword [esp + 0x1ad4]
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.004807e0
add esp, 0xc
test eax, eax
jne 0x4776a4
mov ecx, dword [edi + 0x10]
add ecx, 0xfffffff4
mov dword [edi + 0x10], ecx
mov eax, dword [edi + 0x14]
adc eax, 0xffffffff
mov dword [edi + 0x14], eax
jmp 0x476cd5
mov ebp, dword [esp + 0x1ad4]
push esi
push ebp
push edi
call fcn.004807e0
add esp, 0xc
test eax, eax
jne 0x4776a4
mov edx, dword [edi + 0x60]
mov eax, dword [edi + 0x20]
mov ebx, dword [esi + 0x5700]
add edx, eax
mov eax, dword [edi + 0x24]
lea ecx, [edx + eax + 0x1e]
mov eax, dword [esi + 0x4ea0]
add ebx, ecx
mov dword [esi + 0x5700], ebx
mov edx, dword [esi + 0x5704]
adc edx, 0
test eax, eax
mov dword [esi + 0x5704], edx
je 0x476d87
mov edx, dword [edi + 0xc]
push esi
push ebp
push edx
push eax
call fcn.00484e10
mov ebx, eax
add esp, 0x10
test ebx, ebx
je 0x476d51
push esi
push 0
push 0x188
call fcn.00484c20
add esp, 8
push eax
push ebx
call fcn.00479380
mov eax, dword [esi + 0x2c]
add esp, 0xc
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [esi]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1abc
ret
mov ecx, dword [edi + 0x10]
mov eax, 0xc
add ecx, eax
mov dword [edi + 0x10], ecx
mov ebx, dword [edi + 0x14]
mov ecx, 0
adc ebx, ecx
mov dword [edi + 0x14], ebx
mov edx, dword [esi + 0x5700]
add edx, eax
mov dword [esi + 0x5700], edx
mov eax, dword [esi + 0x5704]
adc eax, ecx
mov dword [esi + 0x5704], eax
mov ecx, dword [ebp]
xor ebx, ebx
push 1
push ebx
push ebx
push ecx
call fcn.0047e6b0
push esi
push ebx
mov dword [esi + 0x38], ebx
push ebx
mov dword [esi + 0x3c], ebx
call fcn.00478510
add esp, 0x1c
mov dword [esi + 0xc050], eax
test byte [esi + 0x5735], 0x80
je 0x476dde
mov edx, dword [esi + 0x4ea8]
push esi
push edx
call fcn.00482af0
mov dword [esi + 0x8b8], eax
mov dword [esi + 0x5758], ebx
add esp, 8
mov dword [esi + 0x8bc], edx
mov dword [esi + 0x575c], ebx
mov eax, dword [esp + 0x10]
cmp eax, 9
jne 0x476ea1
mov eax, dword [ebp]
push esi
push eax
call fcn.0048a8b0
add esp, 8
test eax, eax
jne 0x477315
cmp dword [esp + 0x34], ebx
je 0x476e0c
mov word [edi + 0x34], 0xffff
lea ecx, [esp + 0x10]
push esi
lea eax, [edi + 0x34]
push ecx
push eax
call fcn.00488e10
mov eax, dword [esi + 0xa0]
add esp, 0xc
cmp eax, ebx
jne 0x476e88
mov edx, dword [esi + 0x4e84]
lea ebx, [edi + 4]
push esi
push ebx
push edx
call fcn.00488170
mov eax, dword [esi + 0xa0]
add esp, 0xc
test eax, eax
jne 0x476e79
mov al, byte [ebx]
mov dl, byte [edi + 0x36]
xor al, dl
push esi
and eax, 6
xor word [edi + 0x36], ax
call fcn.004887d0
push esi
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], edx
call fcn.0048a970
mov ecx, dword [esi + 4]
push esi
mov dword [ebp], ecx
call fcn.00488320
add esp, 0xc
jmp 0x476e88
push esi
call fcn.00488320
push esi
call fcn.0048a970
add esp, 8
mov eax, dword [esi + 0xa0]
test eax, eax
je 0x477037
mov dword [esi], 9
jmp 0x477037
cmp eax, 8
jne 0x476f4c
mov edx, dword [ebp]
push esi
push edx
call fcn.00486140
add esp, 8
test eax, eax
jne 0x477315
cmp dword [esp + 0x34], ebx
je 0x476ecb
mov word [edi + 0x34], 0xffff
lea eax, [esp + 0x10]
push esi
push eax
lea eax, [edi + 0x34]
push eax
call fcn.00486500
mov eax, dword [esi + 0xa0]
add esp, 0xc
cmp eax, ebx
jne 0x476e88
mov ecx, dword [esi + 0x4e84]
lea ebx, [edi + 4]
push esi
push ebx
push ecx
call fcn.004856c0
mov eax, dword [esi + 0xa0]
add esp, 0xc
test eax, eax
jne 0x476f3b
mov dl, byte [ebx]
mov cl, byte [edi + 0x36]
xor dl, cl
push esi
and edx, 6
xor word [edi + 0x36], dx
call fcn.00485d40
push esi
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], edx
call fcn.00486200
mov eax, dword [esi + 4]
push esi
mov dword [ebp], eax
call fcn.00485880
add esp, 0xc
jmp 0x476e88
push esi
call fcn.00485880
push esi
call fcn.00486200
jmp 0x476e85
push 0x2000
call fcn.004adbfa
mov ebx, eax
add esp, 4
test ebx, ebx
jne 0x476f6f
pop edi
pop esi
pop ebp
mov eax, 4
pop ebx
add esp, 0x1abc
ret
mov eax, dword [esp + 0x2c]
test eax, eax
jne 0x477020
mov ecx, dword [esi + 0x44]
mov edx, dword [esi + 0x40]
mov eax, dword [esp + 0x40]
push 0
push 0
push ecx
push edx
push eax
call fcn.004745b0
mov eax, dword [esi + 0xa0]
add esp, 0x14
test eax, eax
jne 0x47701a
mov eax, dword [esi + 0x8c8]
push esi
test eax, eax
push 0x2000
push ebx
je 0x476fc1
call fcn.00477f80
xor ecx, ecx
add esp, 0xc
mov dword [esp + 0x14], eax
cmp ecx, eax
jmp 0x476fd1
call fcn.00477e50
xor edx, edx
add esp, 0xc
mov dword [esp + 0x14], eax
cmp edx, eax
sbb eax, eax
neg eax
test eax, eax
je 0x477009
mov eax, dword [esp + 0x1ad4]
mov ecx, dword [esp + 0x14]
xor ebp, ebp
push esi
push eax
push ebp
push ecx
push ebx
call fcn.00485110
mov ecx, dword [esp + 0x28]
add esp, 0x14
cmp eax, ecx
jne 0x477053
cmp edx, ebp
jne 0x477053
mov eax, dword [esi + 0xa0]
test eax, eax
je 0x476f9e
mov eax, dword [esi + 0xa0]
mov ebp, dword [esp + 0x1ad4]
test eax, eax
je 0x477020
mov dword [esi], 9
push ebx
call fcn.004ad74d
mov eax, dword [esi + 0x38]
mov ecx, dword [esi + 0x3c]
add esp, 4
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], ecx
cmp dword [esi], 0
je 0x477099
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, 0x1abc
ret
push ebx
call fcn.004ad74d
mov edx, dword [esi + 0x2c]
add esp, 4
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test byte [esi + 0x5735], 0x80
je 0x477089
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, 0x1abc
ret
pop edi
pop esi
pop ebp
mov eax, 0xa
pop ebx
add esp, 0x1abc
ret
mov eax, dword [esi + 0x2c]
cmp eax, 0xffffffff
je 0x4770b8
cmp dword [esp + 0x14], 0xffffffff
je 0x477547
cmp eax, 0xffffffff
je 0x4770b8
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
test byte [esi + 0x5735], 0x80
je 0x4770f3
mov eax, dword [esi + 0x5758]
mov edx, dword [esi + 0x5700]
mov ecx, dword [esi + 0x575c]
mov ebx, dword [esp + 0x28]
add edx, eax
mov dword [esi + 0x5700], edx
mov eax, dword [esi + 0x5704]
mov edx, dword [esp + 0x24]
adc eax, ecx
mov dword [esi + 0x5704], eax
jmp 0x477117
mov edx, dword [esp + 0x24]
mov ecx, dword [esi + 0x5700]
mov ebx, dword [esp + 0x28]
add ecx, edx
mov dword [esi + 0x5700], ecx
mov eax, dword [esi + 0x5704]
adc eax, ebx
mov dword [esi + 0x5704], eax
mov ecx, dword [esi + 0x5700]
mov eax, dword [esi + 0x5704]
cmp dword [esi + 0x92c], 0
mov dword [esp + 0x58], ecx
mov dword [esp + 0x5c], eax
je 0x47713d
cmp dword [esi + 0x930], 0
je 0x477173
test eax, eax
jl 0x477173
jg 0x477148
cmp ecx, 0xffffffff
jb 0x477173
push esi
push 0
push 0x10e
call fcn.00484c20
add esp, 8
push eax
push 0xe
call fcn.00479380
add esp, 0xc
mov eax, 0xe
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1abc
ret
mov eax, dword [esi + 0xc050]
mov dword [edi + 0x10], edx
mov dword [edi + 0xc], eax
mov dword [edi + 0x14], ebx
mov eax, dword [esi + 0x4ea0]
test eax, eax
je 0x477198
add edx, 0xc
adc ebx, 0
mov dword [edi + 0x10], edx
mov dword [edi + 0x14], ebx
mov eax, dword [esi + 0x8c4]
test eax, eax
je 0x4771e6
cmp dword [esi + 0x4e88], 1
jne 0x4771b9
mov ecx, dword [esi + 0x38]
mov dword [edi + 0x18], ecx
mov edx, dword [esi + 0x3c]
mov dword [edi + 0x1c], edx
jmp 0x4771f2
mov eax, dword [esi + 0x92c]
test eax, eax
je 0x4771d4
mov eax, dword [esi + 0x8f8]
mov dword [edi + 0x18], eax
mov ecx, dword [esi + 0x8fc]
jmp 0x4771ef
mov edx, dword [esi + 0x8f8]
mov dword [edi + 0x18], edx
mov dword [edi + 0x1c], 0
jmp 0x4771f2
mov eax, dword [esi + 0x38]
mov dword [edi + 0x18], eax
mov ecx, dword [esi + 0x3c]
mov dword [edi + 0x1c], ecx
test byte [esi + 0x5735], 0x80
jne 0x477557
mov edx, dword [edi + 0x44]
mov eax, dword [edi + 0x40]
mov ecx, dword [ebp]
push 0
push edx
push eax
push ecx
call fcn.0047e6b0
and eax, edx
add esp, 0x10
cmp eax, 0xffffffff
je 0x47752c
mov eax, dword [esi + 0x8c4]
mov ebx, dword [edi + 0xc]
test eax, eax
mov dword [esp + 0x34], ebx
jne 0x477240
mov eax, 0xfff7
and word [edi + 0x36], ax
and word [edi + 4], ax
jmp 0x477253
mov eax, dword [esi + 0x4ea0]
test eax, eax
je 0x477253
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 0x47726d
mov word [edi + 2], 0x2d
jmp 0x477289
test eax, eax
jne 0x477278
mov eax, 0xa
jmp 0x477285
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.004807e0
add esp, 0xc
test eax, eax
je 0x4772a6
mov dword [edi + 0xc], ebx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1abc
ret
mov eax, dword [esi + 0xc054]
test eax, eax
je 0x47750a
mov eax, dword [esi + 0x4ea0]
test eax, eax
je 0x477500
mov edx, dword [edi + 0xc]
push esi
push ebp
push edx
push eax
call fcn.00484e10
mov ebx, eax
add esp, 0x10
test ebx, ebx
je 0x4772fe
push esi
push 0
push 0x188
call fcn.00484c20
add esp, 8
push eax
push ebx
call fcn.00479380
add esp, 0xc
mov eax, ebx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1abc
ret
push 0x2000
call fcn.004adbfa
mov ebp, eax
add esp, 4
test ebp, ebp
mov dword [esp + 0x14], ebp
jne 0x477325
pop edi
pop esi
pop ebp
mov eax, 4
pop ebx
add esp, 0x1abc
ret
mov eax, dword [esp + 0x1ad4]
xor ebx, ebx
push 1
push ebx
mov ecx, dword [eax]
push ebx
push ecx
call fcn.0047e6b0
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x38]
add esp, 0x10
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x50], ebx
mov ebx, dword [esp + 0x24]
test eax, eax
mov dword [esp + 0x30], edx
jl 0x477372
jg 0x477363
cmp ebx, 0x2000
jbe 0x477372
mov ebx, 0x2000
mov dword [esp + 0x48], 0
jmp 0x477376
mov dword [esp + 0x48], eax
cmp dword [esi], 0
jne 0x4774ec
mov eax, dword [esp + 0x48]
test eax, eax
jl 0x4774ec
jg 0x477395
test ebx, ebx
jbe 0x4774ec
mov eax, dword [esp + 0x1ad4]
lea edx, [esp + 0x3c]
push 0
push edx
mov ecx, dword [eax]
push ebx
push ebp
push ecx
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x4774d8
mov eax, dword [esp + 0x3c]
test eax, eax
jbe 0x4774d8
xor ebp, ebp
test eax, eax
jle 0x4773fd
push esi
call fcn.00484d50
mov edx, dword [esp + 0x18]
mov dword [esp + 0x3c], eax
push esi
movsx eax, byte [edx + ebp]
push eax
call fcn.00484d70
mov eax, dword [esp + 0x20]
mov cl, byte [esp + 0x44]
add esp, 0xc
mov dl, byte [eax + ebp]
xor dl, cl
mov byte [eax + ebp], dl
mov eax, dword [esp + 0x3c]
inc ebp
cmp ebp, eax
jl 0x4773c8
mov ebp, dword [esp + 0x1ad4]
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x2c]
push 0
mov ecx, dword [ebp]
push edx
push eax
push ecx
call fcn.0047e6b0
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x24]
add esp, 0x10
lea edx, [esp + 0x54]
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 0x4774d0
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x3c]
cmp eax, ecx
jne 0x4774d0
mov edx, dword [esp + 0x2c]
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x30]
add edx, ebx
adc ecx, eax
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x50]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x4c]
add ecx, ebx
adc edx, eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x4c], ecx
sub eax, ecx
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x50], edx
sbb ecx, edx
js 0x4774a1
jg 0x477492
cmp eax, 0x2000
jbe 0x4774a1
mov ebx, 0x2000
mov dword [esp + 0x48], 0
jmp 0x4774a7
mov ebx, eax
mov dword [esp + 0x48], 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.004745b0
mov eax, dword [esi + 0xa0]
add esp, 0x14
test eax, eax
je 0x4774de
mov dword [esi], 9
jmp 0x4774de
mov dword [esi], 0xe
jmp 0x4774de
mov dword [esi], 0xb
mov eax, dword [esi]
mov ebp, dword [esp + 0x14]
test eax, eax
je 0x47737f
push ebp
call fcn.004ad74d
mov ebp, dword [esp + 0x1ad8]
mov ebx, dword [esp + 0x38]
add esp, 4
mov eax, dword [esi]
test eax, eax
jne 0x4776a4
mov edx, dword [esp + 0x5c]
mov eax, dword [esp + 0x58]
mov dword [edi + 0xc], ebx
mov ecx, dword [ebp]
push 0
push edx
push eax
push ecx
call fcn.0047e6b0
and eax, edx
add esp, 0x10
cmp eax, 0xffffffff
jne 0x477557
push esi
push 0
push 0x189
call fcn.00484c20
add esp, 8
push eax
push 0xb
call fcn.00479380
add esp, 0xc
pop edi
pop esi
pop ebp
mov eax, 0xb
pop ebx
add esp, 0x1abc
ret
xor ebx, ebx
test byte [esi + 0x5735], 0x80
jne 0x47756a
cmp dword [esi + 0x8c4], ebx
je 0x4775bd
mov eax, dword [esp + 0x10]
cmp eax, 8
je 0x47757e
cmp eax, 9
je 0x47757e
test byte [edi + 4], 8
je 0x4775bd
push esi
push ebp
push edi
call fcn.00480da0
add esp, 0xc
cmp eax, ebx
jne 0x4776a4
mov eax, dword [esi + 0x92c]
mov ecx, dword [esi + 0x5700]
cmp eax, ebx
je 0x4775a6
add ecx, 0x18
jmp 0x4775a9
add ecx, 0x10
mov dword [esi + 0x5700], ecx
mov eax, dword [esi + 0x5704]
adc eax, ebx
mov dword [esi + 0x5704], eax
cmp dword [edi + 0x24], ebx
je 0x4775d8
mov eax, dword [edi + 0x4c]
mov ecx, dword [edi + 0x50]
cmp eax, ecx
je 0x4775d5
push eax
call fcn.004ad74d
add esp, 4
mov dword [edi + 0x24], ebx
cmp dword [esi + 0x8c8], ebx
je 0x47760b
mov edx, dword [esp + 0x40]
push edx
push 2
push 0x2c1
call fcn.00484c20
add esp, 8
push eax
lea eax, [esp + 0x27c]
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
jmp 0x477692
cmp dword [esi + 0x918], ebx
je 0x477660
cmp dword [esi + 0x91c], ebx
je 0x477660
mov ecx, dword [edi + 0x48]
lea edx, [esp + 0x274]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea eax, [esp + 0x274]
push eax
call fcn.00478590
add esp, 4
lea ecx, [esp + 0x274]
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
and al, 0xdf
lea edx, [esp + 0x274]
push eax
push edx
mov dword [esp + 0x28], eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
mov eax, dword [edi + 0x48]
push eax
push 2
push 0x2bf
call fcn.00484c20
add esp, 8
lea ecx, [esp + 0x278]
push eax
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
lea edx, [esp + 0x280]
push edx
call fcn.00478590
add esp, 0x10
lea eax, [esp + 0x274]
push eax
call fcn.00475d90
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1abc
ret