Function at 0x4218e0
Capabilities:
Get file size
Read file on windows
Write file on windows

Disassembly:
push 0xffffffffffffffff
push 0x4ec4bb
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x88
push ebx
push ebp
push esi
push edi
xor ebx, ebx
mov ecx, 0xf
xor eax, eax
lea edi, [esp + 0x59]
mov byte [esp + 0x58], bl
mov esi, dword [esp + 0xb4]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x4c]
lea ecx, [esp + 0x38]
push eax
lea edx, [esp + 0x28]
push ecx
mov ecx, dword [esi + 0x1f4]
push edx
mov edx, dword [esi + 0x1ec]
lea eax, [esp + 0x64]
push 0x40
push eax
mov eax, dword [esi + 0x20]
push ecx
push edx
push eax
mov dword [esp + 0x60], ebx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x44], ebx
call fcn.004257c0
add esp, 0x20
cmp eax, ebx
mov dword [esp + 0x3c], eax
je 0x421e06
push eax
call fcn.00410a20
add esp, 4
cmp eax, ebx
mov dword [esp + 0x14], eax
je 0x421e0f
mov edx, dword [esp + 0xa8]
lea ecx, [esp + 0x28]
push ecx
push edx
mov dword [esp + 0x30], ebx
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov ecx, dword [esp + 0x28]
mov edi, dword [esp + 0xac]
push ecx
push eax
push edi
mov dword [esp + 0x2c], eax
call fcn.00412ac0
add esp, 0xc
test eax, eax
je 0x421e18
mov edx, dword [esp + 0xbc]
mov eax, dword [esp + 0x38]
mov ebp, dword [esp + 0xb0]
cmp eax, ebx
mov dword [edx], 1
je 0x4219da
mov eax, dword [ebp + 0x24]
or al, 8
mov dword [ebp + 0x24], eax
cmp dword [esp + 0x4c], ebx
je 0x4219e8
mov eax, dword [ebp + 0x24]
or al, 0x10
mov dword [ebp + 0x24], eax
mov eax, dword [esp + 0xa8]
push eax
call fcn.00425ba0
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x2c]
mov dword [esi + 0x10], eax
mov eax, dword [esp + 0x40]
mov dword [esi + 0x18], ecx
mov dword [esi + 0x1c], edx
mov edx, dword [esp + 0x28]
lea ecx, [esi + 0x28]
mov dword [esi + 0x24], eax
push ecx
lea eax, [esp + 0x60]
push edx
push eax
mov dword [esi + 0x14], ebx
call fcn.004293c0
mov ecx, dword [esp + 0xb8]
add esp, 0x10
mov dword [esi + 0x38], 0x3e0
mov dword [esi + 0x3c], ebx
push ebx
push ebx
push ebx
push ecx
mov dword [esi + 0x40], ebx
mov dword [esi + 0x44], ebx
mov dword [esi + 0x378], ebx
mov dword [esi + 0x37c], ebx
mov dword [esi + 0x380], ebx
mov dword [esi + 0x384], ebx
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
push ebx
push ebx
push ebx
push edi
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
push ebp
call fcn.0041f300
push 0x3e0
push ebp
push edi
call fcn.0041f610
add esp, 0x10
test eax, eax
je 0x421e21
mov eax, dword [esi + 0x18]
mov dword [esp + 0x2c], ebx
cmp eax, ebx
mov dword [esp + 0x10], ebx
jne 0x421aab
cmp dword [esi + 0x1c], ebx
jne 0x421aab
mov dword [esp + 0x2c], 1
mov dword [esp + 0x10], ebx
jmp 0x421ce9
mov ecx, dword [esi + 0x1c]
mov ebp, 0x10000
cmp ecx, ebx
jne 0x421abd
cmp eax, ebp
jae 0x421abd
mov ebp, eax
push ebp
call fcn.004d2462
mov ecx, dword [esp + 0x18]
add esp, 4
mov dword [esp + 0x48], eax
mov edx, dword [ecx]
push ebp
call dword [edx + 8]
add eax, 4
push eax
mov dword [esp + 0x48], eax
call fcn.004d2462
add esp, 4
mov dword [esp + 0x54], eax
mov dword [esp + 0x18], eax
mov eax, dword [esi + 0x38]
push ebx
push ebx
push eax
push edi
mov dword [esp + 0x40], ebx
mov dword [esp + 0x60], ebx
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
mov edi, dword [esp + 0x48]
mov ecx, ebp
mov edx, ecx
xor eax, eax
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
push ebx
and ecx, 3
rep stosb byte es:[edi], al
mov ecx, dword [esp + 0x48]
mov edi, dword [esp + 0x1c]
mov edx, ecx
xor eax, eax
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov edi, dword [esp + 0x4c]
mov ecx, dword [esp + 0xac]
lea eax, [esp + 0x38]
mov dword [esp + 0x38], ebx
push eax
push ebp
push edi
push ecx
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x421c10
mov eax, dword [esp + 0x34]
cmp eax, ebx
je 0x421c19
lea edx, [esp + 0x50]
lea ecx, [esp + 0x30]
push edx
lea edx, [esp + 0x20]
push ecx
push edx
lea ecx, [esp + 0x50]
lea edx, [esp + 0x24]
push ecx
push edx
mov edx, dword [esp + 0x28]
push eax
mov eax, dword [esp + 0x3c]
push edi
lea ecx, [esp + 0x74]
push eax
push ecx
push edx
mov dword [esp + 0x44], ebx
call fcn.0041fb10
add esp, 0x28
cmp eax, ebx
jne 0x421c26
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
add ecx, 4
push eax
push ecx
call fcn.004293a0
mov edx, dword [esp + 0x20]
add esp, 8
mov dword [edx], eax
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
lea eax, [esp + 0x20]
push ebx
add ecx, 4
push eax
mov eax, dword [esp + 0xb4]
push ecx
push edx
push eax
mov dword [esp + 0x34], ebx
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x421c8a
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
add ecx, 4
cmp eax, ecx
jb 0x421c91
mov eax, dword [esi + 0x3c]
cmp eax, ebx
jne 0x421c04
mov dword [esi + 0x40], ecx
inc eax
mov dword [esi + 0x44], ecx
mov dword [esi + 0x3c], eax
jmp 0x421b01
push 0x3091
push 0xd
jmp 0x421c98
mov dword [esp + 0x2c], 1
jmp 0x421ca8
jge 0x421c81
push 0x52cb30
lea ecx, [esp + 0x18]
call fcn.0044fec0
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x3c]
push 0x30a4
push edx
push eax
push ecx
lea edx, [esp + 0x24]
push str.Error:_Encrypt_Data_Failed__File__Algrithm_d__DataLen_lu_KeyLen_lu__LINE_d
push edx
mov dword [esp + 0xb8], ebx
call fcn.004535e0
mov eax, dword [esp + 0x2c]
push eax
call fcn.00427050
add esp, 0x1c
lea ecx, [esp + 0x14]
mov dword [esp + 0xa0], 0xffffffff
call fcn.00450660
push 0x30a8
push 0x11
jmp 0x421c98
push 0x30b2
jmp 0x421c96
push 0x30b9
push 0xe
call fcn.0041aab0
add esp, 8
mov dword [esp + 0x10], 1
cmp edi, ebx
je 0x421cb5
push edi
call fcn.004d248b
add esp, 4
mov eax, dword [esp + 0x54]
cmp eax, ebx
je 0x421cc6
push eax
call fcn.004d248b
add esp, 4
mov eax, dword [esp + 0x30]
cmp eax, ebx
je 0x421cdb
push eax
call fcn.004d248b
add esp, 4
mov dword [esp + 0x30], ebx
mov ebp, dword [esp + 0xb0]
mov edi, dword [esp + 0xac]
push edi
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
cmp dword [esp + 0x2c], ebx
je 0x421e40
cmp dword [esp + 0x10], ebx
jne 0x421e40
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x40], 1
cmp eax, ebx
je 0x421dd3
mov eax, dword [esi + 0x3c]
cmp eax, ebx
jne 0x421d34
mov dword [esi + 0x378], 0x3e0
mov dword [esi + 0x37c], ebx
jmp 0x421d64
mov ecx, dword [esi + 0x40]
push ebx
dec eax
push ecx
push ebx
push eax
call fcn.00438280
mov ecx, dword [esi + 0x44]
xor edi, edi
add eax, ecx
adc edx, edi
mov edi, dword [esp + 0xac]
add eax, 0x3e0
adc edx, ebx
mov dword [esi + 0x378], eax
mov dword [esi + 0x37c], edx
mov edx, dword [esp + 0xb8]
mov eax, dword [ebp + 0x20]
push edx
push esi
push eax
push edi
call fcn.0041beb0
add esp, 0x10
test eax, eax
je 0x421dc4
mov ecx, dword [ebp + 0x24]
or ecx, 4
mov dword [ebp + 0x24], ecx
mov ecx, dword [esp + 0xb8]
push ecx
call fcn.00429480
add esp, 4
test eax, eax
jne 0x421da3
mov eax, dword [ebp + 0x24]
or al, 1
mov dword [ebp + 0x24], eax
mov edx, dword [esp + 0xb8]
add edx, 0x10
push edx
call fcn.00429480
add esp, 4
test eax, eax
jne 0x421dd3
mov eax, dword [ebp + 0x24]
or al, 2
mov dword [ebp + 0x24], eax
jmp 0x421dd3
push 0x30fe
push 0x10
call fcn.0041aab0
add esp, 8
push ebp
call fcn.0041f340
push esi
push ebp
call fcn.0041f130
add esp, 0xc
test eax, eax
je 0x421e28
push ebx
push ebx
push ebx
push edi
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
push 0x3e0
push ebp
push edi
call fcn.0041f610
add esp, 0xc
test eax, eax
je 0x421e31
jmp 0x421e40
push 0x3026
push 0xb
jmp 0x421e38
push 0x302d
push 0xc
jmp 0x421e38
push 0x303c
push 0x25
jmp 0x421e38
push 0x3067
jmp 0x421e36
push 0x3108
push 0x13
jmp 0x421e38
push 0x3110
push 0x10
call fcn.0041aab0
add esp, 8
mov ecx, dword [esp + 0x98]
mov eax, dword [esp + 0x40]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x94
ret