Function at 0x452020
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x420
push ebx
mov ebx, ecx
mov eax, dword [ebx + 4]
test eax, eax
jne 0x45205f
push 0x530474
push eax
lea eax, [esp + 0xc]
push eax
mov dword [esp + 0x10], 0x539060
mov dword [esp + 0x14], 0x20e
call fcn.0041ce50
add esp, 0xc
xor al, al
pop ebx
add esp, 0x420
ret 8
mov ecx, dword [eax + 8]
test ecx, ecx
jne 0x4520a2
mov ecx, dword [0x5683f8]
push 0x5390cc
push 0x530c80
push 0x30
push ecx
lea edx, [esp + 0x14]
push edx
mov dword [esp + 0x18], 0x539060
mov dword [esp + 0x1c], 0x216
call fcn.00433f60
add esp, 0x14
xor al, al
pop ebx
add esp, 0x420
ret 8
push edi
push 0
push 0
push 0
call fcn.00419aa0
mov edi, dword [esp + 0x438]
add esp, 0xc
push 1
push 0
push 0
push edi
mov dword [esp + 0x24], eax
call dword [sym.imp.kernel32.dll_SetFilePointer]
cmp eax, 0xffffffff
mov dword [esp + 8], eax
jne 0x452109
call dword [sym.imp.kernel32.dll_GetLastError]
push 0x530474
lea eax, [esp + 0xc]
push 0
push eax
mov dword [esp + 0x14], 0x539060
mov dword [esp + 0x18], 0x22a
call fcn.0041ce50
add esp, 0xc
pop edi
xor al, al
pop ebx
add esp, 0x420
ret 8
push 0
push 4
push 0x539058
push edi
call fcn.00419bb0
add esp, 0x10
test al, al
jne 0x452156
call dword [sym.imp.kernel32.dll_GetLastError]
push 0x530474
lea ecx, [esp + 0xc]
push 0
push ecx
mov dword [esp + 0x14], 0x539060
mov dword [esp + 0x18], 0x235
call fcn.0041ce50
add esp, 0xc
pop edi
xor al, al
pop ebx
add esp, 0x420
ret 8
mov edx, dword [ebx + 4]
mov eax, dword [edx + 8]
push 0
push 4
lea ecx, [esp + 0x28]
push ecx
push edi
mov dword [esp + 0x30], eax
call fcn.00419bb0
add esp, 0x10
test al, al
jne 0x4521ad
call dword [sym.imp.kernel32.dll_GetLastError]
push 0x530474
lea edx, [esp + 0xc]
push 0
push edx
mov dword [esp + 0x14], 0x539060
mov dword [esp + 0x18], 0x23f
call fcn.0041ce50
add esp, 0xc
pop edi
xor al, al
pop ebx
add esp, 0x420
ret 8
mov eax, dword [ebx + 4]
push ebp
mov ebp, dword [eax + 4]
push esi
mov esi, dword [ebp]
cmp esi, ebp
mov dword [esp + 0x20], esi
je 0x452271
mov ecx, dword [esi + 0x20]
lea edx, [esp + 0x1c]
push edx
push 4
lea eax, [esp + 0x2c]
push eax
push edi
mov dword [esp + 0x34], ecx
call fcn.00419bb0
add esp, 0x10
test al, al
je 0x4522d0
cmp dword [esi + 0x24], 0x10
jb 0x4521f3
mov ecx, dword [esi + 0x10]
jmp 0x4521f6
lea ecx, [esi + 0x10]
lea edx, [esp + 0x2c]
lea ebx, [ebx]
mov al, byte [ecx]
inc ecx
mov byte [edx], al
inc edx
test al, al
jne 0x452200
mov ecx, dword [esp + 0x24]
xor eax, eax
test ecx, ecx
jbe 0x45221e
xor byte [esp + eax + 0x2c], 0x65
inc eax
cmp eax, ecx
jb 0x452214
lea edx, [esp + 0x1c]
push edx
push ecx
lea eax, [esp + 0x34]
push eax
push edi
call fcn.00419bb0
add esp, 0x10
test al, al
je 0x4522ec
mov edx, dword [esi + 0x28]
mov eax, dword [ebx + 8]
lea ecx, [esp + 0x1c]
push ecx
push 4
lea ecx, [eax + edx*4]
push ecx
push edi
call fcn.00419bb0
add esp, 0x10
test al, al
je 0x452308
lea ecx, [esp + 0x20]
call fcn.00451e50
mov esi, dword [esp + 0x20]
cmp esi, ebp
jne 0x4521c4
mov eax, dword [esp + 0x1c]
push 0
push 2
lea edx, [esp + 0x20]
push edx
push edi
mov byte [esp + 0x28], ah
mov byte [esp + 0x29], al
call fcn.00419bb0
add esp, 0x10
test al, al
jne 0x452318
call dword [sym.imp.kernel32.dll_GetLastError]
push 0x530474
lea eax, [esp + 0x14]
push 0
push eax
mov dword [esp + 0x1c], 0x539060
mov dword [esp + 0x20], 0x27b
call fcn.0041ce50
add esp, 0xc
pop esi
pop ebp
pop edi
xor al, al
pop ebx
add esp, 0x420
ret 8
call dword [sym.imp.kernel32.dll_GetLastError]
push 0x530474
push 0
lea edx, [esp + 0x18]
mov dword [esp + 0x1c], 0x254
push edx
jmp 0x45234f
call dword [sym.imp.kernel32.dll_GetLastError]
push 0x530474
push 0
lea eax, [esp + 0x18]
mov dword [esp + 0x1c], 0x261
push eax
jmp 0x45234f
call dword [sym.imp.kernel32.dll_GetLastError]
mov dword [esp + 0x14], 0x26a
jmp 0x452343
mov esi, dword [esp + 0x438]
test esi, esi
je 0x452374
push 1
push 0
push 0
push edi
call dword [sym.imp.kernel32.dll_SetFilePointer]
cmp eax, 0xffffffff
jne 0x45236e
call dword [sym.imp.kernel32.dll_GetLastError]
mov dword [esp + 0x14], 0x289
push 0x530474
push 0
lea ecx, [esp + 0x18]
push ecx
mov dword [esp + 0x1c], 0x539060
call fcn.0041ce50
add esp, 0xc
pop esi
pop ebp
pop edi
xor al, al
pop ebx
add esp, 0x420
ret 8
sub eax, dword [esp + 0x10]
mov dword [esi], eax
pop esi
pop ebp
pop edi
mov al, 1
pop ebx
add esp, 0x420
ret 8