Function at 0x4063d0
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x80
push esi
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x18], 0
xorpd xmm0, xmm0
movlpd qword [ebp - 0x78], xmm0
xorpd xmm0, xmm0
movlpd qword [ebp - 0x68], xmm0
xorpd xmm0, xmm0
movlpd qword [ebp - 0x70], xmm0
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x24]
mov dword [ebp - 0xc], ecx
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x1c]
mov dword [ebp - 0x10], eax
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x18]
mov dword [ebp - 8], edx
mov dword [ebp - 0x50], 0
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x54], 0
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x3c], 0
cmp dword [ebp + 0xc], 2
jl 0x406469
lea eax, [ebp - 1]
push eax
mov ecx, 4
imul ecx, ecx, 0
mov edx, dword [ebp + 0x10]
mov eax, dword [edx + ecx]
push eax
call fcn.0040c4a0
add esp, 8
movzx ecx, al
test ecx, ecx
jne 0x406473
mov eax, 1
jmp 0x407576
mov edx, dword [ebp + 8]
cmp dword [edx + 0x14], 0
jne 0x406511
push 0x439084
mov eax, 4
shl eax, 0
mov ecx, dword [ebp + 0x10]
mov edx, dword [ecx + eax]
push edx
call fcn.004291c8
add esp, 8
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], 0
jne 0x4064d3
mov eax, 4
shl eax, 0
mov ecx, dword [ebp + 0x10]
mov edx, dword [ecx + eax]
push edx
push str.File__s_not_found._n
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00409490
add esp, 0x10
mov eax, 9
jmp 0x407576
mov edx, dword [ebp - 0x20]
push edx
push 0x100000
push 1
mov eax, dword [ebp - 0x10]
push eax
call fcn.0042aa88
add esp, 0x10
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x20], eax
mov edx, dword [ebp - 0x20]
push edx
call fcn.0042a44a
add esp, 4
mov eax, dword [ebp + 8]
cmp dword [eax + 0x20], 0
jne 0x40650f
mov eax, 9
jmp 0x407576
jmp 0x40654d
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x14]
mov dword [ecx + 0x20], eax
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x20], 0x100000
jbe 0x406533
mov edx, dword [ebp + 8]
mov dword [edx + 0x20], 0x100000
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x20]
push ecx
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x10]
push eax
mov ecx, dword [ebp - 0x10]
push ecx
call fcn.00429920
add esp, 0xc
mov edx, dword [ebp - 8]
movzx eax, byte [edx + 0x12]
cmp eax, 1
jne 0x4067f1
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x20]
push edx
movzx eax, byte [ebp - 1]
push eax
mov ecx, dword [ebp - 8]
push ecx
call fcn.00410940
add esp, 0xc
mov dword [ebp - 0x40], eax
cmp dword [ebp - 0x40], 0
je 0x40659a
mov edx, dword [ebp - 0x40]
push edx
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00409400
add esp, 0xc
mov eax, dword [ebp - 0x40]
jmp 0x407576
mov edx, dword [ebp - 8]
mov eax, dword [edx + 0x62d4]
movzx ecx, word [eax + 0x48]
mov dword [ebp - 0x24], ecx
mov edx, dword [ebp - 0x24]
push edx
push str.ROM_header_offset__on_board_BIOS_:__04x_n
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00409490
add esp, 0x10
mov edx, dword [ebp - 8]
mov eax, dword [edx + 0x62d4]
mov ecx, dword [ebp - 0x24]
movzx edx, word [eax + ecx + 0x20]
mov dword [ebp - 0x24], edx
mov eax, dword [ebp - 0x24]
push eax
push str.Master_data_table_offset__on_board_BIOS_:__04x_n
mov ecx, dword [ebp - 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.00409490
add esp, 0x10
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0x62d4]
mov edx, dword [ebp - 0x24]
movzx eax, word [ecx + edx + 0x3e]
mov dword [ebp - 0x24], eax
mov ecx, dword [ebp - 0x24]
push ecx
push str.MemoryTrainingInfo_offset__on_board_BIOS_:__04x_n
mov edx, dword [ebp - 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.00409490
add esp, 0x10
mov ecx, dword [ebp - 8]
mov edx, dword [ecx + 0x62d4]
add edx, dword [ebp - 0x24]
mov dword [ebp - 0x5c], edx
mov eax, dword [ebp - 0x5c]
movzx ecx, word [eax]
mov dword [ebp - 0x4c], ecx
mov edx, dword [ebp - 0x4c]
push edx
push str.table_size__on_board_BIOS_:__04x_n
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00409490
add esp, 0x10
mov edx, dword [ebp - 0x10]
movzx eax, word [edx + 0x48]
mov dword [ebp - 0x14], eax
mov ecx, dword [ebp - 0x14]
push ecx
push str.ROM_header_offset__new_BIOS_:__04x_n
mov edx, dword [ebp - 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.00409490
add esp, 0x10
mov ecx, dword [ebp - 0x10]
add ecx, dword [ebp - 0x14]
movzx edx, word [ecx + 0xe]
add edx, dword [ebp - 0x10]
mov dword [ebp - 0x2c], edx
mov eax, dword [ebp - 0x10]
add eax, dword [ebp - 0x14]
movzx ecx, word [eax + 0x20]
mov dword [ebp - 0x14], ecx
mov edx, dword [ebp - 0x14]
push edx
push str.Master_data_table_offset__new_BIOS_:__04x_n
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00409490
add esp, 0x10
mov edx, dword [ebp - 0x10]
add edx, dword [ebp - 0x14]
movzx eax, word [edx + 0x3e]
mov dword [ebp - 0x14], eax
mov ecx, dword [ebp - 0x14]
push ecx
push str.MemoryTrainingInfo_offset__new_BIOS_:__04x_n
mov edx, dword [ebp - 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.00409490
add esp, 0x10
mov ecx, dword [ebp - 0x10]
add ecx, dword [ebp - 0x14]
mov dword [ebp - 0x60], ecx
mov edx, dword [ebp - 0x60]
movzx eax, word [edx]
mov dword [ebp - 0x48], eax
mov ecx, dword [ebp - 0x48]
push ecx
push str.table_size__new_BIOS_:__04x_n
mov edx, dword [ebp - 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.00409490
add esp, 0x10
mov ecx, dword [ebp - 0x4c]
cmp ecx, dword [ebp - 0x48]
je 0x40672a
push str.Error:_Memory_training_table_sizes_of_onboard_BIOS_and_new_BIOS_do_not_match.__Abort._n
mov edx, dword [ebp - 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.00409490
add esp, 0xc
mov ecx, dword [ebp - 8]
mov dword [ecx + 0x34], 0x1a
mov edx, dword [ebp - 8]
mov eax, dword [edx + 0x34]
jmp 0x407576
mov eax, dword [ebp - 0x48]
push eax
mov ecx, dword [ebp - 8]
mov edx, dword [ecx + 0x62d4]
add edx, dword [ebp - 0x24]
push edx
mov eax, dword [ebp - 0x10]
add eax, dword [ebp - 0x14]
push eax
call fcn.00429920
add esp, 0xc
push str.Copying_from_onboard_BIOS_to_new_BIOS_n
mov ecx, dword [ebp - 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.00409490
add esp, 0xc
mov eax, dword [ebp - 0x10]
add eax, 0x21
mov dword [ebp - 0x34], eax
mov ecx, dword [ebp - 0x10]
push ecx
call fcn.0041c590
add esp, 4
mov dword [ebp - 0x1c], eax
mov edx, dword [ebp - 0x2c]
mov eax, dword [edx]
push eax
mov ecx, dword [ebp - 0x34]
movzx edx, byte [ecx]
push edx
mov eax, dword [ebp - 0x1c]
push eax
push str.New_BIOS_data_before_flash:_size_04x__checksum_02x__crc_08x_n
mov ecx, dword [ebp - 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.00409490
add esp, 0x18
mov eax, dword [ebp - 0x1c]
push eax
mov ecx, dword [ebp - 0x10]
push ecx
call fcn.0041c650
add esp, 8
xor edx, edx
sub edx, eax
mov eax, dword [ebp - 0x34]
mov byte [eax], dl
mov ecx, dword [ebp - 0x1c]
push ecx
mov edx, dword [ebp - 0x10]
push edx
call fcn.0041c5e0
add esp, 8
mov ecx, dword [ebp - 0x2c]
mov dword [ecx], eax
mov edx, dword [ebp - 0x2c]
mov eax, dword [edx]
push eax
mov ecx, dword [ebp - 0x34]
movzx edx, byte [ecx]
push edx
mov eax, dword [ebp - 0x1c]
push eax
push str.New_BIOS_data_after_flash:_size_04x__checksum_02x__crc_08x_n
mov ecx, dword [ebp - 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.00409490
add esp, 0x18
mov eax, dword [ebp - 8]
movzx ecx, byte [eax + 6]
cmp ecx, 1
jne 0x406947
movzx edx, byte [ebp - 1]
push edx
mov eax, dword [ebp - 8]
push eax
call fcn.004114f0
add esp, 8
mov ecx, dword [ebp - 8]
mov edx, dword [ecx]
push edx
call fcn.004155d0
add esp, 4
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0x62d4]
mov edx, dword [ebp - 0x30]
lea eax, [ecx + edx - 0x14]
mov dword [ebp - 0x28], eax
mov ecx, dword [ebp - 0x30]
push ecx
movzx edx, byte [ebp - 1]
push edx
mov eax, dword [ebp - 8]
push eax
call fcn.00410940
add esp, 0xc
mov ecx, 1
imul ecx, ecx, 0
mov edx, dword [ebp - 0x28]
movzx eax, byte [edx + ecx]
cmp eax, 0x49
jne 0x4068e7
mov ecx, 1
shl ecx, 0
mov edx, dword [ebp - 0x28]
movzx eax, byte [edx + ecx]
cmp eax, 0x53
jne 0x4068e7
mov ecx, 1
shl ecx, 1
mov edx, dword [ebp - 0x28]
movzx eax, byte [edx + ecx]
cmp eax, 0x52
jne 0x4068e7
mov ecx, 1
imul ecx, ecx, 0
mov edx, dword [ebp - 0x28]
movzx eax, byte [edx + ecx + 0xe]
cmp eax, 0x49
jne 0x4068e7
mov ecx, 1
shl ecx, 0
mov edx, dword [ebp - 0x28]
movzx eax, byte [edx + ecx + 0xe]
cmp eax, 0x53
jne 0x4068e7
mov ecx, 1
shl ecx, 1
mov edx, dword [ebp - 0x28]
movzx eax, byte [edx + ecx + 0xe]
cmp eax, 0x52
jne 0x4068e7
mov ecx, dword [ebp - 0x30]
mov edx, dword [ebp - 0x10]
lea eax, [edx + ecx - 0x14]
mov dword [ebp - 0x50], eax
push 0x14
mov ecx, dword [ebp - 0x28]
push ecx
mov edx, dword [ebp - 0x50]
push edx
call fcn.00429920
add esp, 0xc
mov eax, dword [ebp - 0x10]
add eax, 0x21
mov dword [ebp - 0x34], eax
mov ecx, dword [ebp - 0x10]
push ecx
call fcn.0041c590
add esp, 4
mov dword [ebp - 0x1c], eax
mov edx, dword [ebp - 0x10]
movzx eax, word [edx + 0x48]
mov dword [ebp - 0x14], eax
mov ecx, dword [ebp - 0x10]
add ecx, dword [ebp - 0x14]
movzx edx, word [ecx + 0xe]
add edx, dword [ebp - 0x10]
mov dword [ebp - 0x2c], edx
mov eax, dword [ebp - 0x1c]
push eax
mov ecx, dword [ebp - 0x10]
push ecx
call fcn.0041c650
add esp, 8
xor edx, edx
sub edx, eax
mov eax, dword [ebp - 0x34]
mov byte [eax], dl
mov ecx, dword [ebp - 0x1c]
push ecx
mov edx, dword [ebp - 0x10]
push edx
call fcn.0041c5e0
add esp, 8
mov ecx, dword [ebp - 0x2c]
mov dword [ecx], eax
mov edx, dword [ebp - 8]
movzx eax, byte [edx + 7]
cmp eax, 1
jne 0x406a72
movzx ecx, byte [ebp - 1]
push ecx
mov edx, dword [ebp - 8]
push edx
call fcn.004114f0
add esp, 8
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
push ecx
call fcn.004155d0
add esp, 4
mov dword [ebp - 0x30], eax
mov edx, dword [ebp - 8]
mov eax, dword [edx + 0x62d4]
mov ecx, dword [ebp - 0x30]
lea edx, [eax + ecx - 0x24]
mov dword [ebp - 0x38], edx
mov eax, dword [ebp - 0x30]
push eax
movzx ecx, byte [ebp - 1]
push ecx
mov edx, dword [ebp - 8]
push edx
call fcn.00410940
add esp, 0xc
mov eax, 1
imul eax, eax, 0
mov ecx, dword [ebp - 0x38]
movzx edx, byte [ecx + eax]
cmp edx, 0x53
jne 0x406a12
mov eax, 1
shl eax, 0
mov ecx, dword [ebp - 0x38]
movzx edx, byte [ecx + eax]
cmp edx, 0x4e
jne 0x406a12
mov eax, 1
imul eax, eax, 0
mov ecx, dword [ebp - 0x38]
movzx edx, byte [ecx + eax + 0xe]
cmp edx, 0x53
jne 0x406a12
mov eax, 1
shl eax, 0
mov ecx, dword [ebp - 0x38]
movzx edx, byte [ecx + eax + 0xe]
cmp edx, 0x4e
jne 0x406a12
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp - 0x10]
lea edx, [ecx + eax - 0x24]
mov dword [ebp - 0x54], edx
push 0x10
mov eax, dword [ebp - 0x38]
push eax
mov ecx, dword [ebp - 0x54]
push ecx
call fcn.00429920
add esp, 0xc
mov edx, dword [ebp - 0x10]
add edx, 0x21
mov dword [ebp - 0x34], edx
mov eax, dword [ebp - 0x10]
push eax
call fcn.0041c590
add esp, 4
mov dword [ebp - 0x1c], eax
mov ecx, dword [ebp - 0x10]
movzx edx, word [ecx + 0x48]
mov dword [ebp - 0x14], edx
mov eax, dword [ebp - 0x10]
add eax, dword [ebp - 0x14]
movzx ecx, word [eax + 0xe]
add ecx, dword [ebp - 0x10]
mov dword [ebp - 0x2c], ecx
mov edx, dword [ebp - 0x1c]
push edx
mov eax, dword [ebp - 0x10]
push eax
call fcn.0041c5e0
add esp, 8
mov ecx, dword [ebp - 0x2c]
mov dword [ecx], eax
mov edx, dword [ebp - 0x1c]
push edx
mov eax, dword [ebp - 0x10]
push eax
call fcn.0041c650
add esp, 8
xor ecx, ecx
sub ecx, eax
mov edx, dword [ebp - 0x34]
mov byte [edx], cl
movzx eax, byte [ebp - 1]
push eax
mov ecx, dword [ebp - 8]
push ecx
call fcn.00411870
add esp, 8
mov dword [ebp - 0x40], eax
mov edx, dword [ebp - 8]
mov dword [edx + 0x34], 0x1a
mov eax, dword [ebp + 8]
cmp dword [eax + 0x20], 0x10000
jae 0x406aa6
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x20], 0x10000
mov edx, 1
test edx, edx
je 0x407570
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x20]
push ecx
mov edx, dword [ebp - 0x10]
push edx
movzx eax, byte [ebp - 1]
push eax
mov ecx, dword [ebp - 8]
push ecx
call fcn.0040f2a0
add esp, 0x10
mov edx, dword [ebp - 8]
mov eax, dword [edx + 0x34]
mov dword [ebp - 0x58], eax
cmp dword [ebp - 0x58], 0x1a
ja case.0x406aec.1
mov ecx, dword [ebp - 0x58]
movzx edx, byte [ecx + 0x4075b4]
jmp dword [edx*4 + 0x40757c]
movzx eax, byte [ebp - 1]
imul eax, eax, 0x994
mov ecx, dword [ebp - 8]
lea edx, [ecx + eax + 0x1c0]
mov dword [ebp - 0x3c], edx
mov eax, dword [ebp - 0x3c]
movzx ecx, word [eax + 0x18]
push ecx
push str.Old_DeviceID:__X_n
mov edx, dword [ebp - 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.00409490
add esp, 0x10
mov ecx, dword [ebp - 8]
mov edx, dword [ecx + 0x6188]
push edx
push str.New_DeviceID:__X_n
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00409490
add esp, 0x10
mov edx, dword [ebp - 0x3c]
add edx, 0x75
push edx
push str.Old_Product_Name:__15s_n
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00409490
add esp, 0x10
mov edx, dword [ebp - 8]
add edx, 0x6294
push edx
push str.New_Product_Name:__15s_n
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00409490
add esp, 0x10
mov edx, dword [ebp - 0x3c]
add edx, 0xb5
push edx
push str.Old_BIOS_Version:__s_n
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00409490
add esp, 0x10
mov edx, dword [ebp - 8]
add edx, 0x6194
push edx
push str.New_BIOS_Version:__s_n
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00409490
add esp, 0x10
mov edx, dword [ebp - 0x3c]
add edx, 0x25
push edx
push str.Flash_type:__s_n
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00409490
add esp, 0x10
mov edx, dword [ebp - 8]
movzx eax, byte [edx + 0x18]
cmp eax, 1
jne 0x406bfc
push str.Preserve_ROM_settings_n
mov ecx, dword [ebp - 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.00409490
add esp, 0xc
jmp 0x40756b
mov eax, dword [ebp - 8]
movzx ecx, byte [eax + 0x11]
test ecx, ecx
jne 0x406c21
push str.ROM_not_erased_n
mov edx, dword [ebp - 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.00409490
add esp, 0xc
mov ecx, dword [ebp - 8]
movzx edx, word [ecx + 0x643e]
test edx, edx
jle 0x406c82
mov eax, dword [ebp - 8]
mov cx, word [eax + 0x643e]
sub cx, 1
mov edx, dword [ebp - 8]
mov word [edx + 0x643e], cx
mov eax, dword [ebp - 8]
movzx ecx, byte [eax + 0x11]
cmp ecx, 1
je 0x406c73
mov edx, dword [ebp - 8]
movzx eax, word [edx + 0x643e]
push eax
push str.Auto_retry_after_failure___d_retries_remaining_..._n
mov ecx, dword [ebp - 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.00409490
add esp, 0x10
mov eax, dword [ebp - 8]
mov dword [eax + 0x34], 5
jmp 0x40756b
mov ecx, dword [ebp - 8]
mov eax, dword [ecx + 0x34]
jmp 0x407576
mov edx, dword [ebp + 8]
movzx eax, byte [edx]
cmp eax, 1
jne 0x406cad
push str.ROM_erased_n
mov ecx, dword [ebp - 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.00409490
add esp, 0xc
jmp 0x40756b
mov eax, dword [ebp + 8]
cmp dword [eax + 0x14], 0
jne 0x406d36
push str.Reading_Firmware_Data_File._n
mov ecx, dword [ebp - 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.00409490
add esp, 0xc
push 0x439084
mov eax, 4
shl eax, 0
mov ecx, dword [ebp + 0x10]
mov edx, dword [ecx + eax]
push edx
call fcn.004291c8
add esp, 8
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], 0
jne 0x406d34
mov eax, 4
shl eax, 0
mov ecx, dword [ebp + 0x10]
mov edx, dword [ecx + eax]
push edx
push str.File__s_not_found._n
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00409490
add esp, 0x10
movzx edx, byte [ebp - 1]
push edx
mov eax, dword [ebp - 8]
push eax
call fcn.0040d930
add esp, 8
mov eax, 9
jmp 0x407576
jmp 0x406da5
push 0x439084
mov ecx, dword [0x448364]
push ecx
call fcn.004291c8
add esp, 8
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x20], 0
je 0x406d68
push 0
mov edx, dword [0x44835c]
push edx
mov eax, dword [ebp - 0x20]
push eax
call fcn.0042abc3
add esp, 0xc
cmp dword [ebp - 0x20], 0
jne 0x406da5
mov ecx, dword [0x448364]
push ecx
push str.File__s_not_found._n
mov edx, dword [ebp - 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.00409490
add esp, 0x10
movzx ecx, byte [ebp - 1]
push ecx
mov edx, dword [ebp - 8]
push edx
call fcn.0040d930
add esp, 8
mov eax, 9
jmp 0x407576
mov eax, dword [ebp - 0x20]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00413340
add esp, 8
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], 0
jne 0x406dfd
mov edx, 4
shl edx, 0
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax + edx]
push ecx
push str.Fail_To_Parse_Firmware_File__s._n
mov edx, dword [ebp - 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.00409490
add esp, 0x10
movzx ecx, byte [ebp - 1]
push ecx
mov edx, dword [ebp - 8]
push edx
call fcn.0040d930
add esp, 8
mov eax, 0x1a
jmp 0x407576
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
cmp dword [ecx + 0xf0dc], 0xffffffff
je 0x406e48
mov edx, dword [ebp - 8]
mov eax, dword [edx]
cmp dword [eax + 0xf0e0], 0xffffffff
je 0x406e48
mov ecx, dword [ebp - 8]
mov edx, dword [ecx]
mov eax, dword [edx + 0xf0e0]
push eax
mov ecx, dword [ebp - 8]
mov edx, dword [ecx]
mov eax, dword [edx + 0xf0dc]
push eax
push str.Using_GPIO__d_For_SiI_Reset_Pin__GPIO__d_For_SiI_Microcontroller_Program_Pin_n
mov ecx, dword [ebp - 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.00409490
add esp, 0x14
jmp 0x406ea8
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
cmp dword [ecx + 0xf0dc], 0xffffffff
je 0x406e79
mov edx, dword [ebp - 8]
mov eax, dword [edx]
mov ecx, dword [eax + 0xf0dc]
push ecx
push str.Using_GPIO__d_For_SiI_Reset_Pin_n
mov edx, dword [ebp - 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.00409490
add esp, 0x10
jmp 0x406ea8
mov ecx, dword [ebp - 8]
mov edx, dword [ecx]
cmp dword [edx + 0xf0e0], 0xffffffff
je 0x406ea8
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
mov edx, dword [ecx + 0xf0e0]
push edx
push str.Using_GPIO__d_For_SiI_Microcontroller_Program_Pin_n
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00409490
add esp, 0x10
push str.Firmware_Update_In_Process._n
mov edx, dword [ebp - 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.00409490
add esp, 0xc
lea ecx, [ebp - 0x78]
push ecx
call fcn.0040c540
add esp, 4
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x74], edx
lea edx, [ebp - 0x80]
push edx
call fcn.0040c540
add esp, 4
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x7c], edx
mov eax, dword [ebp - 0x80]
sub eax, dword [ebp - 0x78]
mov ecx, dword [ebp - 0x7c]
sbb ecx, dword [ebp - 0x74]
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x64], ecx
mov edx, dword [ebp - 8]
mov eax, dword [edx + 0x62dc]
imul eax, eax, 0x64
xor edx, edx
div dword [ebp - 0x18]
test eax, eax
jne 0x406f18
mov dword [ebp - 0x70], 0x3e7
mov dword [ebp - 0x6c], 0
jmp 0x406f55
push 0
push 0x64
mov eax, dword [ebp - 0x64]
push eax
mov ecx, dword [ebp - 0x68]
push ecx
call fcn.0042b670
mov ecx, eax
mov esi, edx
mov edx, dword [ebp - 8]
mov eax, dword [edx + 0x62dc]
imul eax, eax, 0x64
xor edx, edx
div dword [ebp - 0x18]
xor edx, edx
push edx
push eax
push esi
push ecx
call fcn.0042b5c0
sub eax, dword [ebp - 0x68]
sbb edx, dword [ebp - 0x64]
mov dword [ebp - 0x70], eax
mov dword [ebp - 0x6c], edx
mov eax, dword [ebp - 0x6c]
push eax
mov ecx, dword [ebp - 0x70]
push ecx
mov edx, dword [ebp - 0x18]
push edx
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0x62dc]
push ecx
mov edx, dword [ebp - 8]
mov eax, dword [edx + 0x62dc]
imul eax, eax, 0x64
xor edx, edx
div dword [ebp - 0x18]
push eax
push str.Completed__d___Transferred__Xh_of__Xh_Bytes__Time_Remaining__lu_Seconds____r
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00409490
add esp, 0x20
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 0x18]
sub eax, dword [edx + 0x62dc]
cmp eax, 0x400
jbe 0x406fb1
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x20], 0x400
jmp 0x406fc3
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 0x18]
sub eax, dword [edx + 0x62dc]
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x20], eax
mov edx, dword [ebp - 8]
mov eax, dword [edx + 0x62dc]
cmp eax, dword [ebp - 0x18]
je 0x406fe0
mov ecx, dword [ebp - 8]
mov dword [ecx + 0x34], 0xc
jmp 0x40756b
mov edx, dword [ebp - 8]
mov eax, dword [edx]
push eax
mov ecx, dword [ebp - 8]
mov edx, dword [ecx]
mov eax, dword [edx + 0xf0f0]
call eax
add esp, 4
movzx ecx, al
cmp ecx, 1
jne case.0x406aec.14
mov edx, dword [ebp - 8]
mov dword [edx + 0x34], 0xf
jmp 0x40756b
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0x62dc]
shr ecx, 0xa
lea edx, [ecx + ecx + 2]
push edx
push str._nPreforming_Firmware_CRC_Check._This_Will_Take_Approximately__d_Seconds._n
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00409490
add esp, 0x10
mov edx, dword [ebp - 8]
mov dword [edx + 0x34], 0xe
jmp 0x40756b
push str.Invalid_PC_BIOS_image_n
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00409490
add esp, 0xc
movzx edx, byte [ebp - 1]
push edx
mov eax, dword [ebp - 8]
push eax
call fcn.0040d930
add esp, 8
mov ecx, dword [ebp - 8]
mov eax, dword [ecx + 0x34]
jmp 0x407576
jmp 0x40756b
mov edx, dword [ebp - 8]
movzx eax, word [edx + 0x1a]
push eax
push str.Old_mem_setting:__04X_n
mov ecx, dword [ebp - 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.00409490
add esp, 0x10
mov eax, dword [ebp - 8]
movzx ecx, word [eax + 0x1c]
push ecx
push str.New_mem_setting:__04X_n
mov edx, dword [ebp - 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.00409490
add esp, 0x10
mov ecx, dword [ebp - 8]
cmp dword [ecx + 0x34], 0x12
jne 0x4070ec
push str.Mem_setting_mismatched_n
mov edx, dword [ebp - 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.00409490
add esp, 0xc
movzx ecx, byte [ebp - 1]
push ecx
mov edx, dword [ebp - 8]
push edx
call fcn.0040d930
add esp, 8
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x34]
jmp 0x407576
jmp 0x40756b
mov ecx, dword [ebp - 8]
movzx edx, word [ecx + 0x20]
push edx
push str.Old_SSID:__04X_n
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00409490
add esp, 0x10
mov edx, dword [ebp - 8]
movzx eax, word [edx + 0x22]
push eax
push str.New_SSID:__04X_n
mov ecx, dword [ebp - 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.00409490
add esp, 0x10
mov eax, dword [ebp - 8]
cmp dword [eax + 0x34], 0x14
jne 0x407165
push str.SSID_mismatched_n
mov ecx, dword [ebp - 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.00409490
add esp, 0xc
movzx eax, byte [ebp - 1]
push eax
mov ecx, dword [ebp - 8]
push ecx
call fcn.0040d930
add esp, 8
mov edx, dword [ebp - 8]
mov eax, dword [edx + 0x34]
jmp 0x407576
jmp 0x40756b
mov eax, dword [ebp - 8]
add eax, 0x38
push eax
push str.Old_P_N:__s_n
mov ecx, dword [ebp - 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.00409490
add esp, 0x10
mov eax, dword [ebp - 8]
add eax, 0x78
push eax
push str.New_P_N:__s_n
mov ecx, dword [ebp - 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.00409490
add esp, 0x10
mov eax, dword [ebp - 8]
cmp dword [eax + 0x34], 0x16
jne 0x4071dc
push str.P_N_mismatched_n
mov ecx, dword [ebp - 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.00409490
add esp, 0xc
movzx eax, byte [ebp - 1]
push eax
mov ecx, dword [ebp - 8]
push ecx
call fcn.0040d930
add esp, 8
mov edx, dword [ebp - 8]
mov eax, dword [edx + 0x34]
jmp 0x407576
jmp 0x40756b
mov eax, dword [ebp - 8]
movzx ecx, byte [eax + 0x11]
test ecx, ecx
jne 0x407358
mov edx, dword [ebp - 8]
mov eax, dword [edx]
mov ecx, dword [eax + 0x368]
mov dword [ebp - 0x44], ecx
mov edx, dword [ebp - 0x44]
sub edx, 5
mov dword [ebp - 0x44], edx
cmp dword [ebp - 0x44], 0xa
ja case.0x407214.9
mov eax, dword [ebp - 0x44]
jmp dword [eax*4 + 0x4075d0]
push str.ASIC_not_idle_after_write_enable_n
mov ecx, dword [ebp - 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.00409490
add esp, 0xc
jmp 0x407358
push str.ROM_not_idle_after_write_enable_n
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00409490
add esp, 0xc
jmp 0x407358
push str.Write_enable_not_set_n
mov edx, dword [ebp - 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.00409490
add esp, 0xc
jmp 0x407358
push str.ASIC_not_idle_after_write_disable_n
mov ecx, dword [ebp - 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.00409490
add esp, 0xc
jmp 0x407358
push str.ROM_not_idle_after_write_disable_n
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00409490
add esp, 0xc
jmp 0x407358
push str.Write_enable_not_reset_n
mov edx, dword [ebp - 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.00409490
add esp, 0xc
jmp 0x407358
mov ecx, dword [ebp - 8]
mov edx, dword [ecx]
mov eax, dword [edx + 0x36c]
push eax
push str.ROM_erase_failed_on_sector__X_n
mov ecx, dword [ebp - 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.00409490
add esp, 0x10
jmp 0x407358
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x36c]
push edx
push str.ASIC_not_idle_after_write_at__05X_n
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00409490
add esp, 0x10
jmp 0x407358
mov edx, dword [ebp - 8]
mov eax, dword [edx]
mov ecx, dword [eax + 0x36c]
push ecx
push str.ROM_not_idle_after_write_at__05X_n
mov edx, dword [ebp - 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.00409490
add esp, 0x10
jmp 0x407358
mov ecx, dword [ebp - 8]
mov edx, dword [ecx]
mov eax, dword [edx + 0x36c]
push eax
push str.Write_fail_at__05X_n
mov ecx, dword [ebp - 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.00409490
add esp, 0x10
jmp 0x407358
push str._nWrite_fail_n
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00409490
add esp, 0xc
mov edx, dword [ebp - 8]
movzx eax, word [edx + 0x643e]
test eax, eax
jle case.0x406aec.0
mov ecx, dword [ebp - 8]
mov dx, word [ecx + 0x643e]
sub dx, 1
mov eax, dword [ebp - 8]
mov word [eax + 0x643e], dx
mov ecx, dword [ebp - 8]
movzx edx, byte [ecx + 0x11]
test edx, edx
jne 0x4073a9
mov eax, dword [ebp - 8]
movzx ecx, word [eax + 0x643e]
push ecx
push str.Auto_retry_after_failure___d_retries_remaining_..._n
mov edx, dword [ebp - 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.00409490
add esp, 0x10
mov ecx, dword [ebp - 8]
mov dword [ecx + 0x34], 5
jmp 0x40756b
mov edx, dword [ebp - 8]
mov eax, dword [edx]
cmp dword [eax + 0x1c8], 0xb
jne 0x40749c
mov ecx, dword [ebp - 8]
mov edx, dword [ecx]
push edx
mov eax, dword [ebp - 8]
mov ecx, dword [eax]
mov edx, dword [ecx + 0xf0f0]
call edx
add esp, 4
movzx eax, al
cmp eax, 1
jne 0x407409
mov ecx, dword [ebp - 8]
mov edx, dword [ecx + 0x62dc]
push edx
push str._n_X_bytes_programmed_n
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00409490
add esp, 0x10
jmp 0x407477
mov edx, dword [ebp - 8]
mov eax, dword [edx + 0x62e8]
push eax
mov ecx, dword [ebp - 8]
mov edx, dword [ecx + 0x62e4]
push edx
push str.Hardware_CRC___Xh___Software_CRC___Xh._n
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00409490
add esp, 0x14
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 8]
mov ecx, dword [edx + 0x62e4]
cmp ecx, dword [eax + 0x62e8]
jne 0x407477
mov edx, dword [ebp - 8]
mov eax, dword [edx + 0x62dc]
cmp eax, dword [ebp - 0x18]
jne 0x407477
mov ecx, dword [ebp - 0x18]
push ecx
mov edx, dword [ebp - 8]
mov eax, dword [edx + 0x62dc]
push eax
push str._X__Xh_Bytes_Verified_n
mov ecx, dword [ebp - 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.00409490
add esp, 0x14
mov eax, dword [ebp + 8]
movzx ecx, byte [eax + 2]
test ecx, ecx
jne 0x407497
push str._nRestart_System_To_Complete_VBIOS_Update._n
mov edx, dword [ebp - 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.00409490
add esp, 0xc
jmp 0x407522
mov ecx, dword [ebp - 8]
mov edx, dword [ecx + 0x62d8]
push edx
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0x62dc]
push ecx
push str._X__Xh_bytes_programmed_n
mov edx, dword [ebp - 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.00409490
add esp, 0x14
mov ecx, dword [ebp - 8]
mov edx, dword [ebp - 8]
mov eax, dword [ecx + 0x62dc]
cmp eax, dword [edx + 0x62d8]
jne 0x407522
mov ecx, dword [ebp - 8]
mov edx, dword [ecx + 0x62d8]
push edx
mov eax, dword [ebp - 8]
mov ecx, dword [eax + 0x62e0]
push ecx
push str._X__Xh_bytes_verified_n
mov edx, dword [ebp - 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.00409490
add esp, 0x14
mov ecx, dword [ebp + 8]
movzx edx, byte [ecx + 2]
test edx, edx
jne 0x407522
push str._nRestart_System_To_Complete_VBIOS_Update._n
mov eax, dword [ebp - 0xc]
push eax
mov ecx, dword [ebp + 8]
push ecx
call fcn.00409490
add esp, 0xc
movzx edx, byte [ebp - 1]
push edx
mov eax, dword [ebp - 8]
push eax
call fcn.0040d930
add esp, 8
mov ecx, dword [ebp - 8]
mov eax, dword [ecx + 0x34]
jmp 0x407576
mov edx, dword [ebp - 8]
mov eax, dword [edx + 0x34]
push eax
mov ecx, dword [ebp - 0xc]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.00409400
add esp, 0xc
movzx eax, byte [ebp - 1]
push eax
mov ecx, dword [ebp - 8]
push ecx
call fcn.0040d930
add esp, 8
mov edx, dword [ebp - 8]
mov eax, dword [edx + 0x34]
jmp 0x407576
jmp 0x406aa6
mov eax, dword [ebp - 8]
mov eax, dword [eax + 0x34]
pop esi
mov esp, ebp
pop ebp
ret