Function at 0x457ba0
Capabilities:
Write file on windows

Disassembly:
sub esp, 0x220
push ebx
push ebp
push esi
push edi
mov ebp, ecx
push 0x18056
call fcn.004d8630
mov ebx, eax
mov edi, 0x5a3088
or ecx, 0xffffffff
xor eax, eax
add esp, 4
lea edx, [esp + 0x2c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov dword [esp + 0x20], ebx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x2c]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
xor esi, esi
lea edi, [esp + ecx + 0x2c]
push esi
push str.zenzenu_d.grd
push edi
call fcn.005308a0
add esp, 0xc
lea ecx, [esp + 0x2c]
push 0x55b8b8
push ecx
call fcn.00530d40
add esp, 8
test eax, eax
je 0x457c2d
push eax
call fcn.00530ca0
add esp, 4
inc esi
cmp esi, 0x64
jl 0x457bf9
mov al, byte [esp + 0x2c]
lea esi, [esp + 0x2c]
test al, al
je 0x457c4f
movsx edx, al
push edx
call fcn.00531250
add esp, 4
mov byte [esi], al
mov al, byte [esi + 1]
inc esi
test al, al
jne 0x457c39
mov esi, dword [sym.imp.KERNEL32.dll_CreateFileA]
push 0
push pe_nt_image_headers32
push 1
push 0
push 1
lea eax, [esp + 0x40]
push 0xc0000000
push eax
call esi
cmp eax, 0xffffffff
mov dword [esp + 0x24], eax
jne 0x457cee
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x50
jne 0x457f97
lea ecx, [esp + 0x2c]
lea edx, [esp + 0x130]
push ecx
push str.The_file__s_already_exists.__Overwrite_
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea eax, [esp + 0x130]
push 0x2004
push 0x55f418
push eax
push 0
call fcn.004f0710
add esp, 0x10
cmp eax, 7
jne 0x457cd1
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x220
ret 4
push 0
push pe_nt_image_headers32
push 5
push 0
push 1
lea ecx, [esp + 0x40]
push 0xc0000000
push ecx
call esi
mov dword [esp + 0x24], eax
lea edi, [esp + 0x18]
or ecx, 0xffffffff
xor eax, eax
mov byte [esp + 0x18], 0x54
mov byte [esp + 0x19], 0x4d
mov byte [esp + 0x1a], 9
mov byte [esp + 0x1b], 7
mov byte [esp + 0x1c], 0
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov byte [esp + 0x12], 6
mov edx, ecx
mov esi, edi
mov edi, ebx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [ebx + 5]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [esp + 0x234]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov dword [esp + 0x18], 0
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov byte [ebx + 0x15], 1
mov edi, dword [esp + 0x12]
mov byte [esp + 0x11], 0
and edi, 0xff
mov esi, dword [esp + 0x11]
mov byte [esp + 0x10], 0
and esi, 0xff
mov edx, dword [esp + 0x10]
and edx, 0xff
jl 0x457db4
cmp edx, 0x20
jge 0x457db4
lea ecx, [edx + edx*8]
lea eax, [esi + ecx*2]
mov ecx, eax
shl ecx, 3
sub ecx, eax
lea eax, [ecx + edi]
mov ecx, dword [ebp + eax*8 + 0x18]
test ecx, ecx
je 0x457db4
mov ecx, dword [ebp + eax*8 + 0x14]
test ecx, ecx
je 0x457db4
mov eax, 1
jmp 0x457db6
xor eax, eax
test eax, eax
je 0x457e37
mov cl, 1
mov byte [esp + 0x13], cl
mov eax, dword [esp + 0x13]
and eax, 0xff
lea eax, [edx + eax*2]
cmp eax, 0x1f
jge 0x457e14
test eax, eax
jl 0x457e01
cmp eax, 0x20
jge 0x457e01
lea eax, [eax + eax*8]
lea eax, [esi + eax*2]
mov ebx, eax
shl ebx, 3
sub ebx, eax
lea eax, [ebx + edi]
mov ebx, dword [ebp + eax*8 + 0x18]
test ebx, ebx
je 0x457e01
mov ebx, dword [ebp + eax*8 + 0x14]
test ebx, ebx
je 0x457e01
mov eax, 1
jmp 0x457e03
xor eax, eax
test eax, eax
je 0x457e14
inc cl
cmp cl, 0x20
mov byte [esp + 0x13], cl
jb 0x457dc0
jmp 0x457e37
mov eax, dword [esp + 0x18]
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 0x10]
mov dword [eax + ebx + 0x16], edx
add eax, 4
mov dword [esp + 0x18], eax
mov al, byte [esp + 0x10]
shl cl, 1
add al, cl
mov byte [esp + 0x10], al
mov al, byte [esp + 0x10]
inc al
cmp al, 0x20
mov byte [esp + 0x10], al
jb 0x457d7c
mov al, byte [esp + 0x11]
inc al
cmp al, 0x12
mov byte [esp + 0x11], al
jb 0x457d6d
mov al, byte [esp + 0x12]
dec al
cmp al, 7
mov byte [esp + 0x12], al
jb 0x457d5e
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x20]
mov byte [esp + 0x10], 0
mov byte [esp + 0x11], 0
mov byte [esp + 0x12], 0
mov byte [esp + 0x13], 0
mov eax, dword [esp + 0x10]
push 0x30
mov dword [ecx + edx + 0x16], eax
call fcn.004d8630
mov ebx, eax
xor edi, edi
add esp, 4
cmp ebx, edi
je 0x457eb5
mov ecx, ebx
call fcn.004b5700
mov dword [ebx], vtable.LayoutBitmapFeature.0
mov dword [ebx + 0x2c], edi
jmp 0x457eb7
xor ebx, ebx
push 0x218
call fcn.004d8630
add esp, 4
cmp eax, edi
je 0x457edb
push 0x1e0
push 0x280
mov ecx, eax
call fcn.004c9070
jmp 0x457edd
xor eax, eax
push 0x3fd55555
push 0x55555555
push 0x3fd55555
push 0x55555555
mov dword [ebx + 0x2c], eax
push eax
mov eax, dword [0x5a32b8]
mov ecx, dword [eax + 0x10]
mov ecx, dword [ecx + 0x30]
call fcn.0044a460
mov ecx, dword [ebx + 0x2c]
call fcn.004c9490
mov edx, dword [esp + 0x20]
mov dword [esp + 0x18], eax
lea ebp, [edx + 0x416]
xor esi, esi
mov ecx, dword [ebx + 0x2c]
call fcn.004c9480
imul eax, edi
mov ecx, dword [esp + 0x18]
add eax, esi
inc esi
mov dl, byte [eax + ecx]
cmp esi, 0x270
mov byte [esi + ebp - 1], dl
jl 0x457f1d
inc edi
add ebp, 0x270
cmp edi, 0x9c
jl 0x457f1b
test ebx, ebx
je 0x457f59
mov eax, dword [ebx]
push 1
mov ecx, ebx
call dword [eax]
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
lea ecx, [esp + 0x28]
push 0
push ecx
push 0x18056
push edi
push esi
call dword [sym.imp.KERNEL32.dll_WriteFile]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push edi
call fcn.004d86d0
add esp, 4
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x220
ret 4
lea edx, [esp + 0x2c]
lea eax, [esp + 0x130]
push edx
push str.Unable_to_create_the_file__s.
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea ecx, [esp + 0x130]
push 0x2000
push 0x55f418
push ecx
push 0
call fcn.004f0710
add esp, 0x10
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x220
ret 4