Function at 0x10390f0
Capabilities:
Create directory
Read file on windows
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x4ec
mov eax, dword [0x10a4ce0]
xor eax, ebp
mov dword [ebp - 4], eax
push esi
push edi
mov dword [ebp - 0x4d0], 0
mov dword [ebp - 0x4b8], 0
push 0x200
push 0
lea eax, [ebp - 0x484]
push eax
call fcn.01027af0
add esp, 0xc
mov dword [ebp - 0x4d4], 0
mov dword [ebp - 0x4e0], 0
mov dword [ebp - 0x4c8], 0
or ecx, 0xffffffff
mov word [ebp - 0x4cc], cx
xor edx, edx
mov word [ebp - 0x4c4], dx
mov eax, dword [str.B:EFIAMI_]
mov dword [ebp - 0x284], eax
mov ecx, dword [0x1095fe4]
mov dword [ebp - 0x280], ecx
mov edx, dword [0x1095fe8]
mov dword [ebp - 0x27c], edx
push 0x1f4
push 0
lea eax, [ebp - 0x278]
push eax
call fcn.01027af0
add esp, 0xc
xor ecx, ecx
mov word [ebp - 0x4bc], cx
mov dword [ebp - 0x4dc], 0
push 0x1095fec
mov edx, dword [ebp + 8]
push edx
call fcn.010722bb
add esp, 8
mov dword [ebp - 0x4d0], eax
cmp dword [ebp - 0x4d0], 0
jne 0x10391e7
mov eax, dword [ebp + 8]
push eax
push str.ERROR:_File__s_does_not_exists__n
call fcn.01072843
add esp, 8
mov eax, 0xffff
jmp 0x1039952
mov ecx, dword [ebp - 0x4d0]
push ecx
call fcn.01029815
add esp, 4
lea edx, [ebp + 8]
push edx
call fcn.01038420
add esp, 4
push 0x5c
mov eax, dword [ebp + 8]
push eax
call fcn.0102d42c
add esp, 8
mov dword [ebp - 0x4c8], eax
cmp dword [ebp - 0x4c8], 0
jne 0x1039252
mov ecx, dword [ebp + 8]
push ecx
call fcn.01026be0
add esp, 4
add eax, 1
push eax
call fcn.0107ca40
add esp, 4
mov dword [ebp - 0x4c8], eax
mov edx, dword [ebp + 8]
push edx
mov eax, dword [ebp - 0x4c8]
push eax
call fcn.010718c0
add esp, 8
jmp 0x1039261
mov ecx, dword [ebp - 0x4c8]
add ecx, 1
mov dword [ebp - 0x4c8], ecx
movzx edx, word [ebp - 0x4bc]
mov eax, dword [ebp - 0x4c8]
movsx ecx, byte [eax + edx]
cmp ecx, 0x2e
je 0x103928b
mov dx, word [ebp - 0x4bc]
add dx, 1
mov word [ebp - 0x4bc], dx
jmp 0x1039261
movzx eax, word [ebp - 0x4bc]
cmp eax, 0x1c
jg 0x10392b4
mov ecx, dword [ebp - 0x4c8]
push ecx
call fcn.01026be0
add esp, 4
movzx edx, word [ebp - 0x4bc]
sub eax, edx
cmp eax, 3
jbe 0x10392cb
push str.ERROR:_FV_file_name_should_be_maximum_28.3_format__n
call fcn.01072843
add esp, 4
mov eax, 0xffff
jmp 0x1039952
xor eax, eax
mov word [ebp - 0x4bc], ax
mov dword [ebp - 0x4d8], 0
jmp 0x10392ef
mov ecx, dword [ebp - 0x4d8]
add ecx, 1
mov dword [ebp - 0x4d8], ecx
mov edx, dword [ebp - 0x4c8]
add edx, dword [ebp - 0x4d8]
movsx eax, byte [edx]
test eax, eax
je 0x103932a
mov ecx, dword [ebp - 0x4c8]
add ecx, dword [ebp - 0x4d8]
movsx edx, byte [ecx]
cmp edx, 0x2e
jne 0x1039328
mov ax, word [ebp - 0x4bc]
add ax, 1
mov word [ebp - 0x4bc], ax
jmp 0x10392e0
movzx ecx, word [ebp - 0x4bc]
cmp ecx, 1
jle 0x103934d
push str.ERROR:_File_name_not_valid__FV_file_name_should_be_maximum_28.3_format__n
call fcn.01072843
add esp, 4
mov eax, 0xffff
jmp 0x1039952
push 0x1096094
push str.Efi.txt
call fcn.010722bb
add esp, 8
mov dword [ebp - 0x4c0], eax
cmp dword [ebp - 0x4c0], 0
jne 0x1039385
push str.ERROR:_Unable_to_create_temporary_file__Please_check_write_permissions__n
call fcn.01072843
add esp, 4
mov eax, 0xffff
jmp 0x1039952
cmp dword [ebp - 0x4c0], 0
je 0x10394fe
call fcn.01038860
mov word [ebp - 0x4cc], ax
push 0x3e8
call fcn.01027042
add esp, 4
mov dword [ebp - 0x4b8], eax
movsx edx, word [ebp - 0x4cc]
cmp edx, 0xffffffff
jne 0x10393e5
mov eax, dword [ebp - 0x4b8]
push eax
call fcn.01025407
add esp, 4
mov ecx, dword [ebp - 0x4c0]
push ecx
call fcn.01029815
add esp, 4
mov eax, 0xffff
jmp 0x1039952
movzx edx, word [0x10a8cb4]
push edx
push str.sel_disk__d_n
mov eax, dword [ebp - 0x4b8]
push eax
call fcn.01071ae4
add esp, 0xc
mov ecx, dword [ebp - 0x4c0]
push ecx
mov edx, dword [ebp - 0x4b8]
push edx
call fcn.01026be0
add esp, 4
push eax
push 1
mov eax, dword [ebp - 0x4b8]
push eax
call fcn.010727ac
add esp, 0x10
movsx ecx, word [ebp - 0x4cc]
push ecx
push str.sel_part__d_n
mov edx, dword [ebp - 0x4b8]
push edx
call fcn.01071ae4
add esp, 0xc
mov eax, dword [ebp - 0x4c0]
push eax
mov ecx, dword [ebp - 0x4b8]
push ecx
call fcn.01026be0
add esp, 4
push eax
push 1
mov edx, dword [ebp - 0x4b8]
push edx
call fcn.010727ac
add esp, 0x10
push str.assign_letterb_n
mov eax, dword [ebp - 0x4b8]
push eax
call fcn.01071ae4
add esp, 8
mov ecx, dword [ebp - 0x4c0]
push ecx
mov edx, dword [ebp - 0x4b8]
push edx
call fcn.01026be0
add esp, 4
push eax
push 1
mov eax, dword [ebp - 0x4b8]
push eax
call fcn.010727ac
add esp, 0x10
push str.exit_n
mov ecx, dword [ebp - 0x4b8]
push ecx
call fcn.01071ae4
add esp, 8
mov edx, dword [ebp - 0x4c0]
push edx
mov eax, dword [ebp - 0x4b8]
push eax
call fcn.01026be0
add esp, 4
push eax
push 1
mov ecx, dword [ebp - 0x4b8]
push ecx
call fcn.010727ac
add esp, 0x10
mov edx, dword [ebp - 0x4c0]
push edx
call fcn.01029815
add esp, 4
mov dword [ebp - 0x4c0], 0
call fcn.01038740
movzx eax, ax
test eax, eax
je 0x1039530
push str.ERROR:_Unable_to_Create_NewProcess._Try_to_Open_Terminal_in_ADMIN_Mode__n
call fcn.01072843
add esp, 4
mov ecx, dword [ebp - 0x4b8]
push ecx
call fcn.01025407
add esp, 4
mov eax, 0xffff
jmp 0x1039952
push 0
push str.B:EFIAMI_
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
test eax, eax
jne 0x1039589
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x103955d
push str.INFO:_AMI_folder_has_been_already_exist._So_no_need_of_create_again__n
call fcn.01072843
add esp, 4
jmp 0x1039589
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 3
jne 0x1039589
push str.ERROR:_Might_be_internally_wrong_PATH_given_to_CreateDirectory__n
call fcn.01072843
add esp, 4
or edx, 0xffffffff
mov word [ebp - 0x4c4], dx
jmp 0x10397a4
lea eax, [ebp - 0x4ec]
push eax
call fcn.01038120
add esp, 4
lea ecx, [ebp - 0x4ec]
push ecx
call fcn.01038100
add esp, 4
mov dword [ebp - 0x4e4], eax
push 0x1095fec
mov edx, dword [ebp + 8]
push edx
call fcn.010722bb
add esp, 8
mov dword [ebp - 0x4d0], eax
cmp dword [ebp - 0x4d0], 0
jne 0x10395f5
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.ERROR:_Unable_to_read_path_filename:__x__n
call fcn.01072843
add esp, 8
or eax, 0xffffffff
mov word [ebp - 0x4c4], ax
jmp 0x10397a4
lea ecx, [ebp - 0x4b4]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.01072934
add esp, 8
mov eax, dword [ebp - 0x4a0]
mov dword [ebp - 0x4e0], eax
mov ecx, dword [ebp - 0x4e0]
push ecx
call fcn.01027042
add esp, 4
mov dword [ebp - 0x4d4], eax
mov edx, dword [ebp - 0x4d0]
push edx
mov eax, dword [ebp - 0x4e0]
push eax
push 1
mov ecx, dword [ebp - 0x4d4]
push ecx
call fcn.010725a7
add esp, 0x10
mov edx, dword [ebp - 0x4e0]
push edx
sub esp, 0x78
mov ecx, 0x1e
mov esi, 0x10ad288
mov edi, esp
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp - 0x4d4]
push eax
call fcn.01038e90
add esp, 0x80
mov word [ebp - 0x4c4], ax
movsx ecx, word [ebp - 0x4c4]
test ecx, ecx
jne 0x1039795
mov edx, dword [ebp - 0x4c8]
push edx
lea eax, [ebp - 0x284]
push eax
call fcn.010718d0
add esp, 8
push 0x1095fec
lea ecx, [ebp - 0x284]
push ecx
call fcn.010722bb
add esp, 8
mov dword [ebp - 0x4dc], eax
cmp dword [ebp - 0x4dc], 0
je 0x103973d
mov byte [ebp - 0x84], 0
push 0x7f
push 0
lea edx, [ebp - 0x83]
push edx
call fcn.01027af0
add esp, 0xc
mov eax, dword [ebp - 0x4dc]
push eax
call fcn.01029815
add esp, 4
mov dword [ebp - 0x4dc], 0
push str.File_already_exist.Do_you_want_to_overwrite__Y_N_...
lea ecx, [ebp - 0x84]
push ecx
call fcn.01071ae4
add esp, 8
lea edx, [ebp - 0x84]
push edx
call fcn.0105b3c0
add esp, 4
movsx eax, al
cmp eax, 1
jne 0x1039736
or ecx, 0xffffffff
mov word [ebp - 0x4c4], cx
mov byte [0x10ad080], 0
jmp 0x10397a4
mov byte [0x10ad080], 1
lea edx, [ebp - 0x284]
push edx
push 0x10ad300
call fcn.010718c0
add esp, 8
mov eax, dword [ebp + 8]
push eax
push str.copy__s_B:EFIAMI_
lea ecx, [ebp - 0x484]
push ecx
call fcn.01071ae4
add esp, 0xc
lea edx, [ebp - 0x484]
push edx
call fcn.01071fc3
add esp, 4
mov eax, dword [ebp - 0x4c8]
push eax
mov ecx, dword [ebp - 0x4d4]
push ecx
mov edx, dword [ebp - 0x4e4]
push edx
call fcn.01067680
add esp, 0xc
mov eax, dword [ebp - 0x4d4]
push eax
call fcn.01025407
add esp, 4
push 0x1096094
push str.Efi.txt
call fcn.010722bb
add esp, 8
mov dword [ebp - 0x4c0], eax
cmp dword [ebp - 0x4c0], 0
jne 0x10397cf
mov eax, 0xffff
jmp 0x1039952
cmp dword [ebp - 0x4c0], 0
je 0x10398f5
movzx ecx, word [0x10a8cb4]
push ecx
push str.sel_disk__d_n
mov edx, dword [ebp - 0x4b8]
push edx
call fcn.01071ae4
add esp, 0xc
mov eax, dword [ebp - 0x4c0]
push eax
mov ecx, dword [ebp - 0x4b8]
push ecx
call fcn.01026be0
add esp, 4
push eax
push 1
mov edx, dword [ebp - 0x4b8]
push edx
call fcn.010727ac
add esp, 0x10
movsx eax, word [ebp - 0x4cc]
push eax
push str.sel_part__d_n
mov ecx, dword [ebp - 0x4b8]
push ecx
call fcn.01071ae4
add esp, 0xc
mov edx, dword [ebp - 0x4c0]
push edx
mov eax, dword [ebp - 0x4b8]
push eax
call fcn.01026be0
add esp, 4
push eax
push 1
mov ecx, dword [ebp - 0x4b8]
push ecx
call fcn.010727ac
add esp, 0x10
push str.remove_letterb_n
mov edx, dword [ebp - 0x4b8]
push edx
call fcn.01071ae4
add esp, 8
mov eax, dword [ebp - 0x4c0]
push eax
mov ecx, dword [ebp - 0x4b8]
push ecx
call fcn.01026be0
add esp, 4
push eax
push 1
mov edx, dword [ebp - 0x4b8]
push edx
call fcn.010727ac
add esp, 0x10
push str.exit_n
mov eax, dword [ebp - 0x4b8]
push eax
call fcn.01071ae4
add esp, 8
mov ecx, dword [ebp - 0x4c0]
push ecx
mov edx, dword [ebp - 0x4b8]
push edx
call fcn.01026be0
add esp, 4
push eax
push 1
mov eax, dword [ebp - 0x4b8]
push eax
call fcn.010727ac
add esp, 0x10
mov ecx, dword [ebp - 0x4c0]
push ecx
call fcn.01029815
add esp, 4
mov dword [ebp - 0x4c0], 0
call fcn.01038740
movzx edx, ax
test edx, edx
je 0x1039915
push str.ERROR:_Unable_to_Create_NewProcess._Try_to_open_terminal_in_ADMIN_Mode__n
call fcn.01072843
add esp, 4
mov eax, 0xffff
jmp 0x1039952
cmp dword [ebp - 0x4b8], 0
je 0x103992d
mov eax, dword [ebp - 0x4b8]
push eax
call fcn.01025407
add esp, 4
push str.Efi.txt
call fcn.010728f2
add esp, 4
test eax, eax
je 0x103994b
push str.INFO:_Unable_to_delete_temporary_file__n
call fcn.01072843
add esp, 4
mov ax, word [ebp - 0x4c4]
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.01026ff0
mov esp, ebp
pop ebp
ret