Function at 0x4067b0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x28
push esi
push edi
mov edi, ecx
mov byte [ebp - 1], dl
mov dword [ebp - 0x1c], edi
mov ecx, dword [edi]
call fcn.0040b560
cmp byte [ebp - 1], 0
mov dword [ebp - 0x18], eax
jne 0x4068a2
mov ecx, dword [edi + 8]
mov edx, 0x4bdf70
push 0
call fcn.0040adf0
add esp, 4
mov dword [ebp - 0x14], eax
lea esi, [eax + 4]
test eax, eax
je 0x40680e
mov ecx, dword [esi]
call fcn.00405c50
test eax, eax
jne 0x406862
push str.____________________________________________________________
push 0x5c1404
push 0
call fcn.00405c00
mov edx, dword [ebp - 0x18]
add esp, 0xc
mov ecx, edx
lea eax, [ecx + 1]
mov dword [ebp - 0x20], eax
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x406830
sub ecx, dword [ebp - 0x20]
lea eax, [edx + 1]
push eax
lea eax, [ecx - 2]
push eax
push str.__.s_n
push 0
call fcn.00405c00
push str.____________________________________________________________
push str._s_n_n
push 0
call fcn.00405c00
add esp, 0x1c
cmp dword [ebp - 0x14], 0
je 0x40686f
mov ecx, dword [esi]
call fcn.00405ca0
mov eax, dword [edi + 0x10]
test eax, eax
je 0x406890
cmp byte [eax], 0
je 0x406890
push dword [edi + 4]
push eax
push str.part_parent___s____s_n
push 0
call fcn.00405c00
add esp, 0x10
jmp 0x4068a2
push dword [edi + 4]
push str.part___s_n
push 0
call fcn.00405c00
add esp, 0xc
mov esi, dword [ebx + 8]
test esi, esi
je 0x4068e1
mov ecx, dword [edi]
mov eax, dword [esi]
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4068d0
test dl, dl
je 0x4068cc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4068d0
add eax, 2
add ecx, 2
test dl, dl
jne 0x4068b0
xor eax, eax
jmp 0x4068d5
sbb eax, eax
or eax, 1
test eax, eax
jne 0x4068e1
lea edx, [edi + 8]
mov dword [ebp - 8], edx
jmp 0x40690a
push dword [edi + 8]
mov cl, byte [ebp - 1]
mov edx, 0x5c1444
push dword [ebp - 0x18]
push str.desc
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
lea edx, [edi + 8]
mov dword [ebp - 8], edx
test esi, esi
je 0x40693c
mov ecx, dword [edi + 4]
mov eax, dword [esi + 4]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x406930
test dl, dl
je 0x40692c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x406930
add eax, 2
add ecx, 2
test dl, dl
jne 0x406910
xor eax, eax
jmp 0x406935
sbb eax, eax
or eax, 1
test eax, eax
je 0x406964
mov edx, dword [ebp - 8]
push dword [edx]
push ecx
mov ecx, dword [edi + 4]
call fcn.0040b560
mov cl, byte [ebp - 1]
add esp, 4
mov edx, 0x5c1444
push eax
push 0x5c1448
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
mov ecx, dword [edi + 0xc]
call fcn.0040fc80
test eax, eax
je 0x406aa8
cmp byte [ebp - 1], 0
mov esi, dword [ebp - 8]
je 0x406986
mov ecx, dword [edi]
mov eax, str..pt_t_s_tvariants_t
jmp 0x4069a3
mov ecx, dword [esi]
mov edx, str.variants
push 0
push 0
call fcn.00405ce0
add esp, 8
mov eax, str.______22s__n
mov ecx, str.variants
push ecx
push eax
push 0
call fcn.00405c00
mov ecx, dword [edi + 0xc]
add esp, 0xc
call fcn.0040fc70
mov dword [ebp - 0x20], eax
test eax, eax
je 0x406a3d
mov edi, dword [ebp - 0x20]
xor ecx, ecx
cmp byte [ebp - 1], cl
mov eax, 8
cmovne eax, ecx
mov dword [ebp - 0x18], eax
mov ecx, edi
call fcn.0040fc90
mov ecx, eax
call fcn.0040b560
mov esi, eax
push esi
push 0x4bd483
push dword [ebp - 0x18]
push 0x5c1484
push 0
call fcn.00405c00
add esp, 0x14
push esi
call fcn.00495b38
add esp, 4
mov ecx, edi
call fcn.0040fc80
mov edi, eax
test edi, edi
je 0x406a37
cmp byte [ebp - 1], 0
mov ecx, 0x5c1480
mov eax, 0x5c147c
cmove eax, ecx
push eax
push 0
call fcn.00405c00
mov eax, dword [ebp - 8]
add esp, 8
mov dword [ebp - 8], eax
jmp 0x4069d5
mov edi, dword [ebp - 0x1c]
mov esi, dword [ebp - 8]
cmp byte [ebp - 1], 0
je 0x406a54
push 0x4bd460
push 0
call fcn.00405c00
add esp, 8
jmp 0x406a73
push 0x5c12e4
push 0
call fcn.00405c00
mov ecx, dword [esi]
mov edx, str.variants
push 1
push 1
call fcn.00405ce0
add esp, 0x10
mov esi, dword [ebx + 8]
test esi, esi
je 0x406b0c
mov ecx, dword [edi + 0x14]
mov eax, dword [esi + 0x14]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x406b03
test dl, dl
je 0x406aa4
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x406b03
add eax, 2
add ecx, 2
test dl, dl
jne 0x406a84
xor eax, eax
jmp 0x406b08
test esi, esi
jne 0x406a7e
cmp byte [ebp - 1], 0
je 0x406ac4
push dword [edi]
push str..pt_t_s_tvariants_tNULL_n
push esi
call fcn.00405c00
add esp, 0xc
jmp 0x406b0c
mov eax, dword [ebp - 8]
mov edx, str.variants
push 0
push 0
mov ecx, dword [eax]
call fcn.00405ce0
push str.variants
push str.______22s__NULL__n
push 0
call fcn.00405c00
mov eax, dword [ebp - 8]
add esp, 0x14
mov edx, str.variants
mov ecx, dword [eax]
push 1
push 1
call fcn.00405ce0
add esp, 8
jmp 0x406b0c
sbb eax, eax
or eax, 1
test eax, eax
je 0x406b37
mov eax, dword [ebp - 8]
push dword [eax]
push ecx
mov ecx, dword [edi + 0x14]
call fcn.0040b560
mov cl, byte [ebp - 1]
add esp, 4
mov edx, 0x5c1444
push eax
push str.family_id
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x406b4a
mov ecx, dword [esi + 0x18]
mov edx, dword [edi + 0x18]
call fcn.00405fc0
test eax, eax
je 0x406b81
mov eax, dword [ebp - 8]
mov ecx, dword [edi + 0x18]
push dword [eax]
call fcn.00405590
push ecx
mov edx, eax
mov ecx, str.dev_part_strct__
call fcn.0040a580
mov cl, byte [ebp - 1]
add esp, 4
mov edx, 0x5c1444
push eax
push str.prog_modes
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
mov edx, dword [edi + 0x1c]
cmp edx, 0x15
jne 0x406bb3
test esi, esi
je 0x406b99
mov ecx, dword [esi + 0x1c]
call fcn.00405fc0
test eax, eax
je 0x406bf4
mov eax, dword [ebp - 8]
mov edx, str.XVII__IV
push dword [eax]
push ecx
mov ecx, str.dev_part_strct
call fcn.0040a580
add esp, 4
jmp 0x406bd6
test esi, esi
je 0x406bc3
mov ecx, dword [esi + 0x1c]
call fcn.00405fc0
test eax, eax
je 0x406bf0
mov eax, dword [ebp - 8]
push dword [eax]
push edx
push 0x5c14fc
call fcn.00405b60
add esp, 8
mov cl, byte [ebp - 1]
mov edx, 0x5c1444
push eax
push str.mcuid
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x406c03
mov ecx, dword [esi + 0x20]
mov edx, dword [edi + 0x20]
call fcn.00405fc0
test eax, eax
je 0x406c36
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0x20]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.n_interrupts
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x406c45
mov ecx, dword [esi + 0x24]
mov edx, dword [edi + 0x24]
call fcn.00405fc0
test eax, eax
je 0x406c78
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0x24]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.n_page_erase
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x406c87
mov ecx, dword [esi + 0x28]
mov edx, dword [edi + 0x28]
call fcn.00405fc0
test eax, eax
je 0x406cba
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0x28]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.n_boot_sections
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x406cc9
mov ecx, dword [esi + 0x2c]
mov edx, dword [edi + 0x2c]
call fcn.00405fc0
test eax, eax
je 0x406cfc
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0x2c]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push 0x5c1530
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x406d0b
mov ecx, dword [esi + 0x30]
mov edx, dword [edi + 0x30]
call fcn.00405fc0
test eax, eax
je 0x406d3e
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0x30]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.hvupdi_variant
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x406d4d
mov ecx, dword [esi + 0x34]
mov edx, dword [edi + 0x34]
call fcn.00405fc0
test eax, eax
je 0x406d80
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0x34]
push 0x5c1554
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.stk500_devcode
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x406d8f
mov ecx, dword [esi + 0x38]
mov edx, dword [edi + 0x38]
call fcn.00405fc0
test eax, eax
je 0x406dc2
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0x38]
push 0x5c1554
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.avr910_devcode
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x406dd1
mov ecx, dword [esi + 0x3c]
mov edx, dword [edi + 0x3c]
call fcn.00405fc0
test eax, eax
je 0x406e04
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0x3c]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.chip_erase_delay
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x406e15
movzx edx, byte [edi + 0x40]
movzx ecx, byte [esi + 0x40]
call fcn.00405fc0
test eax, eax
je 0x406e4a
mov eax, dword [ebp - 8]
push dword [eax]
movzx eax, byte [edi + 0x40]
push eax
push 0x5c1554
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.pagel
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x406e5b
movzx edx, byte [edi + 0x41]
movzx ecx, byte [esi + 0x41]
call fcn.00405fc0
test eax, eax
je 0x406e90
mov eax, dword [ebp - 8]
push dword [eax]
movzx eax, byte [edi + 0x41]
push eax
push 0x5c1554
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push 0x5c1598
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x406eb8
movzx eax, byte [esi + 0x42]
cmp al, byte [edi + 0x42]
jne 0x406eaf
movzx eax, byte [esi + 0x43]
cmp al, byte [edi + 0x43]
jne 0x406eaf
movzx eax, byte [esi + 0x44]
cmp al, byte [edi + 0x44]
jne 0x406eaf
xor eax, eax
jmp 0x406eb4
sbb eax, eax
or eax, 1
test eax, eax
je 0x406ef7
mov eax, dword [ebp - 8]
push dword [eax]
movzx eax, byte [edi + 0x44]
push eax
movzx eax, byte [edi + 0x43]
push eax
movzx eax, byte [edi + 0x42]
push eax
push str.0x_02x_0x_02x_0x_02x
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 0x10
mov edx, 0x5c1444
push eax
push str.signature
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x406f08
movzx edx, word [edi + 0x46]
movzx ecx, word [esi + 0x46]
call fcn.00405fc0
test eax, eax
je 0x406f3d
mov eax, dword [ebp - 8]
push dword [eax]
movzx eax, word [edi + 0x46]
push eax
push str.0x_04x
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.usbpid
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x406f45
mov eax, dword [esi + 0x48]
cmp eax, dword [edi + 0x48]
je 0x406f94
mov eax, dword [edi + 0x48]
test eax, eax
jne 0x406f53
mov edx, str.dedicated
jmp 0x406f63
cmp eax, 1
mov edx, 0x5c15dc
mov eax, 0x4be998
cmovne edx, eax
mov eax, dword [ebp - 8]
push dword [eax]
push ecx
mov ecx, str.dev_part_strct__
call fcn.0040a580
mov cl, byte [ebp - 1]
add esp, 4
mov edx, 0x5c1444
push eax
push str.reset
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x406fa3
mov ecx, dword [esi + 0x4c]
mov edx, dword [edi + 0x4c]
call fcn.00405fc0
test eax, eax
je 0x406ff3
mov eax, dword [edi + 0x4c]
cmp eax, 3
jne 0x406fb2
mov edx, str.reset
jmp 0x406fc2
cmp eax, 4
mov edx, 0x5c15e8
mov eax, 0x4be998
cmovne edx, eax
mov eax, dword [ebp - 8]
push dword [eax]
push ecx
mov ecx, str.dev_part_strct__
call fcn.0040a580
mov cl, byte [ebp - 1]
add esp, 4
mov edx, 0x5c1444
push eax
push str.retry_pulse
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x406fff
mov eax, dword [esi + 0x50]
cmp eax, dword [edi + 0x50]
je 0x4071c1
cmp byte [ebp - 1], 0
je 0x40702d
mov eax, dword [ebp - 8]
push dword [edi + 0x50]
push str.0x_04x
mov eax, dword [eax]
mov dword [ebp - 0x18], eax
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov dword [ebp - 0x14], eax
mov eax, str.flags
jmp 0x4071a4
test esi, esi
je 0x40703b
mov eax, dword [edi + 0x50]
xor eax, dword [esi + 0x50]
test al, 0x20
je 0x40707c
mov eax, dword [ebp - 8]
mov edx, 0x5c1600
test byte [edi + 0x50], 0x20
push dword [eax]
mov eax, 0x5c1604
push ecx
cmove edx, eax
mov ecx, str._if_flagout__
call fcn.0040a580
add esp, 4
mov edx, 0x5c1444
xor cl, cl
push eax
push str.is_at90s1200
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x407086
mov eax, dword [esi + 0x50]
xor eax, dword [edi + 0x50]
test al, 8
je 0x4070c7
mov eax, dword [ebp - 8]
mov edx, 0x5c1600
test byte [edi + 0x50], 8
push dword [eax]
mov eax, 0x5c1604
push ecx
cmove edx, eax
mov ecx, str._if_flagout__
call fcn.0040a580
add esp, 4
mov edx, 0x5c1444
xor cl, cl
push eax
push str.allowfullpagebitstream
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x4070d1
mov eax, dword [esi + 0x50]
xor eax, dword [edi + 0x50]
test al, 0x10
je 0x407112
mov eax, dword [ebp - 8]
mov edx, 0x5c1600
test byte [edi + 0x50], 0x10
push dword [eax]
mov eax, 0x5c1604
push ecx
cmove edx, eax
mov ecx, str._if_flagout__
call fcn.0040a580
add esp, 4
mov edx, 0x5c1444
xor cl, cl
push eax
push str.enablepageprogramming
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x40711c
mov eax, dword [edi + 0x50]
xor eax, dword [esi + 0x50]
test al, 1
je 0x40715d
mov eax, dword [ebp - 8]
mov edx, 0x5c1600
test byte [edi + 0x50], 1
push dword [eax]
mov eax, 0x5c1604
push ecx
cmove edx, eax
mov ecx, str._if_flagout__
call fcn.0040a580
add esp, 4
mov edx, 0x5c1444
xor cl, cl
push eax
push str.serial
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x407167
mov eax, dword [esi + 0x50]
xor eax, dword [edi + 0x50]
test al, 6
je 0x4071c1
mov eax, dword [edi + 0x50]
and eax, 6
jne 0x407176
mov ecx, 0x5c1604
jmp 0x407186
cmp eax, 4
mov ecx, 0x4be998
mov eax, 0x5c1600
cmovne ecx, eax
mov eax, dword [ebp - 8]
mov edx, ecx
mov ecx, str.dev_part_strct__
mov eax, dword [eax]
mov dword [ebp - 0x18], eax
call fcn.0040a580
mov dword [ebp - 0x14], eax
xor cl, cl
mov eax, str.parallel
push dword [ebp - 0x18]
mov edx, dword [edi]
push dword [ebp - 0x14]
push eax
push 0
push edx
mov edx, 0x5c1444
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x4071d0
mov ecx, dword [esi + 0x54]
mov edx, dword [edi + 0x54]
call fcn.00405fc0
test eax, eax
je 0x407203
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0x54]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push 0x5c166c
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x407212
mov ecx, dword [esi + 0x58]
mov edx, dword [edi + 0x58]
call fcn.00405fc0
test eax, eax
je 0x407245
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0x58]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.stabdelay
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x407254
mov ecx, dword [esi + 0x5c]
mov edx, dword [edi + 0x5c]
call fcn.00405fc0
test eax, eax
je 0x407287
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0x5c]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.cmdexedelay
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x407296
mov ecx, dword [esi + 0x60]
mov edx, dword [edi + 0x60]
call fcn.00405fc0
test eax, eax
je 0x4072c9
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0x60]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.synchloops
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x4072d8
mov ecx, dword [esi + 0x64]
mov edx, dword [edi + 0x64]
call fcn.00405fc0
test eax, eax
je 0x40730b
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0x64]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.bytedelay
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x40731a
mov ecx, dword [esi + 0x68]
mov edx, dword [edi + 0x68]
call fcn.00405fc0
test eax, eax
je 0x40734d
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0x68]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.pollindex
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x40735e
movzx edx, byte [edi + 0x6c]
movzx ecx, byte [esi + 0x6c]
call fcn.00405fc0
test eax, eax
je 0x407393
mov eax, dword [ebp - 8]
push dword [eax]
movzx eax, byte [edi + 0x6c]
push eax
push 0x5c1554
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.pollvalue
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x4073a2
mov ecx, dword [esi + 0x70]
mov edx, dword [edi + 0x70]
call fcn.00405fc0
test eax, eax
je 0x4073d5
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0x70]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.predelay
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x4073e4
mov ecx, dword [esi + 0x74]
mov edx, dword [edi + 0x74]
call fcn.00405fc0
test eax, eax
je 0x407417
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0x74]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.postdelay
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x407426
mov ecx, dword [esi + 0x78]
mov edx, dword [edi + 0x78]
call fcn.00405fc0
test eax, eax
je 0x407455
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0x78]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.pollmethod
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
mov eax, dword [edi + 0x7c]
test esi, esi
jne 0x407486
test eax, eax
je 0x40747e
lea eax, [edi + 0x80]
mov ecx, edi
push 0x20
push eax
call fcn.00405e50
mov cl, byte [ebp - 1]
mov edx, edi
push eax
call fcn.00405e80
add esp, 0xc
lea ecx, [edi + 0xa0]
jmp 0x4074f0
lea edx, [edi + 0x80]
cmp eax, dword [esi + 0x7c]
jne 0x4074ba
lea ecx, [esi + 0x80]
mov dword [ebp - 0x18], 0x1c
nop
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x4074b4
add ecx, 4
add edx, 4
sub dword [ebp - 0x18], 4
jae 0x4074a0
jmp 0x4074d2
lea edx, [edi + 0x80]
push 0x20
push edx
mov ecx, edi
call fcn.00405e50
mov cl, byte [ebp - 1]
mov edx, edi
push eax
call fcn.00405e80
add esp, 0xc
movzx eax, word [esi + 0xa0]
lea ecx, [edi + 0xa0]
cmp ax, word [ecx]
jne 0x4074f0
movzx eax, byte [esi + 0xa2]
cmp al, byte [ecx + 2]
je 0x407505
push 3
push ecx
mov cl, byte [ebp - 1]
mov edx, edi
push str.flash_instr
call fcn.00405e80
add esp, 0xc
lea eax, [edi + 0xa3]
test esi, esi
je 0x40753a
lea ecx, [esi + 0xa3]
mov dword [ebp - 0x18], 0x10
mov edx, eax
nop
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x407534
add ecx, 4
add edx, 4
sub dword [ebp - 0x18], 4
jae 0x407520
jmp 0x407553
lea eax, [edi + 0xa3]
mov cl, byte [ebp - 1]
mov edx, edi
push 0x14
push eax
push str.eeprom_instr
call fcn.00405e80
add esp, 0xc
test esi, esi
je 0x407568
mov ecx, dword [esi + 0xb8]
mov edx, dword [edi + 0xb8]
call fcn.00405fc0
test eax, eax
je 0x40759e
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0xb8]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.hventerstabdelay
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x4075b3
mov ecx, dword [esi + 0xbc]
mov edx, dword [edi + 0xbc]
call fcn.00405fc0
test eax, eax
je 0x4075e9
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0xbc]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.progmodedelay
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x4075fe
mov ecx, dword [esi + 0xc0]
mov edx, dword [edi + 0xc0]
call fcn.00405fc0
test eax, eax
je 0x407634
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0xc0]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.latchcycles
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x407649
mov ecx, dword [esi + 0xc4]
mov edx, dword [edi + 0xc4]
call fcn.00405fc0
test eax, eax
je 0x40767f
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0xc4]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.togglevtg
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x407694
mov ecx, dword [esi + 0xc8]
mov edx, dword [edi + 0xc8]
call fcn.00405fc0
test eax, eax
je 0x4076ca
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0xc8]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.poweroffdelay
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x4076df
mov ecx, dword [esi + 0xcc]
mov edx, dword [edi + 0xcc]
call fcn.00405fc0
test eax, eax
je 0x407715
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0xcc]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.resetdelayms
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x40772a
mov ecx, dword [esi + 0xd0]
mov edx, dword [edi + 0xd0]
call fcn.00405fc0
test eax, eax
je 0x407760
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0xd0]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.resetdelayus
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x407775
mov ecx, dword [esi + 0xd4]
mov edx, dword [edi + 0xd4]
call fcn.00405fc0
test eax, eax
je 0x4077ab
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0xd4]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.hvleavestabdelay
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x4077c0
mov ecx, dword [esi + 0xd8]
mov edx, dword [edi + 0xd8]
call fcn.00405fc0
test eax, eax
je 0x4077f6
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0xd8]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.resetdelay
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x40780b
mov ecx, dword [esi + 0xdc]
mov edx, dword [edi + 0xdc]
call fcn.00405fc0
test eax, eax
je 0x407841
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0xdc]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.chiperasepulsewidth
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x407856
mov ecx, dword [esi + 0xe0]
mov edx, dword [edi + 0xe0]
call fcn.00405fc0
test eax, eax
je 0x40788c
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0xe0]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.chiperasepolltimeout
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x4078a1
mov ecx, dword [esi + 0xe4]
mov edx, dword [edi + 0xe4]
call fcn.00405fc0
test eax, eax
je 0x4078d7
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0xe4]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.chiperasetime
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x4078ec
mov ecx, dword [esi + 0xe8]
mov edx, dword [edi + 0xe8]
call fcn.00405fc0
test eax, eax
je 0x407922
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0xe8]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.programfusepulsewidth
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x407937
mov ecx, dword [esi + 0xec]
mov edx, dword [edi + 0xec]
call fcn.00405fc0
test eax, eax
je 0x40796d
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0xec]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.programfusepolltimeout
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x407982
mov ecx, dword [esi + 0xf0]
mov edx, dword [edi + 0xf0]
call fcn.00405fc0
test eax, eax
je 0x4079b8
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0xf0]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.programlockpulsewidth
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x4079cd
mov ecx, dword [esi + 0xf4]
mov edx, dword [edi + 0xf4]
call fcn.00405fc0
test eax, eax
je 0x407a03
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0xf4]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.programlockpolltimeout
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x407a18
mov ecx, dword [esi + 0xf8]
mov edx, dword [edi + 0xf8]
call fcn.00405fc0
test eax, eax
je 0x407a4e
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0xf8]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.synchcycles
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x407a63
mov ecx, dword [esi + 0xfc]
mov edx, dword [edi + 0xfc]
call fcn.00405fc0
test eax, eax
je 0x407a99
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0xfc]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.hvspcmdexedelay
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x407ab0
movzx edx, byte [edi + 0x100]
movzx ecx, byte [esi + 0x100]
call fcn.00405fc0
test eax, eax
je 0x407ae8
mov eax, dword [ebp - 8]
push dword [eax]
movzx eax, byte [edi + 0x100]
push eax
push 0x5c1554
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push 0x5c1840
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x407aff
movzx edx, byte [edi + 0x101]
movzx ecx, byte [esi + 0x101]
call fcn.00405fc0
test eax, eax
je 0x407b37
mov eax, dword [ebp - 8]
push dword [eax]
movzx eax, byte [edi + 0x101]
push eax
push 0x5c1554
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.rampz
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x407b4e
movzx edx, byte [edi + 0x102]
movzx ecx, byte [esi + 0x102]
call fcn.00405fc0
test eax, eax
je 0x407b86
mov eax, dword [ebp - 8]
push dword [eax]
movzx eax, byte [edi + 0x102]
push eax
push 0x5c1554
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.spmcr
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x407b9d
movzx edx, byte [edi + 0x103]
movzx ecx, byte [esi + 0x103]
call fcn.00405fc0
test eax, eax
je 0x407bd5
mov eax, dword [ebp - 8]
push dword [eax]
movzx eax, byte [edi + 0x103]
push eax
push 0x5c1554
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.eecr
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x407bec
movzx edx, byte [edi + 0x104]
movzx ecx, byte [esi + 0x104]
call fcn.00405fc0
test eax, eax
je 0x407c24
mov eax, dword [ebp - 8]
push dword [eax]
movzx eax, byte [edi + 0x104]
push eax
push 0x5c1554
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.eind
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x407c39
mov ecx, dword [esi + 0x108]
mov edx, dword [edi + 0x108]
call fcn.00405fc0
test eax, eax
je 0x407c6f
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0x108]
push str.0x_04x
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.mcu_base
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x407c84
mov ecx, dword [esi + 0x10c]
mov edx, dword [edi + 0x10c]
call fcn.00405fc0
test eax, eax
je 0x407cba
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0x10c]
push str.0x_04x
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.nvm_base
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x407ccf
mov ecx, dword [esi + 0x110]
mov edx, dword [edi + 0x110]
call fcn.00405fc0
test eax, eax
je 0x407d05
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0x110]
push str.0x_04x
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.ocd_base
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x407d1a
mov ecx, dword [esi + 0x114]
mov edx, dword [edi + 0x114]
call fcn.00405fc0
test eax, eax
je 0x407d50
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0x114]
push str.0x_04x
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.syscfg_base
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x407d65
mov ecx, dword [esi + 0x118]
mov edx, dword [edi + 0x118]
call fcn.00405fc0
test eax, eax
je 0x407d9b
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0x118]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.ocdrev
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x407db2
movzx edx, byte [edi + 0x11c]
movzx ecx, byte [esi + 0x11c]
call fcn.00405fc0
test eax, eax
je 0x407dea
mov eax, dword [ebp - 8]
push dword [eax]
movzx eax, byte [edi + 0x11c]
push eax
push 0x5c1554
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.autobaud_sync
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x407dff
mov ecx, dword [esi + 0x120]
mov edx, dword [edi + 0x120]
call fcn.00405fc0
test eax, eax
je 0x407e31
mov eax, dword [ebp - 8]
push dword [eax]
push dword [edi + 0x120]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, 0x5c1444
push eax
push str.factory_fcpu
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
mov ecx, dword [ebx + 8]
lea eax, [edi + 0x124]
mov edx, ecx
mov dword [ebp - 0x14], eax
xor esi, esi
sub edx, edi
mov dword [ebp - 0x20], edx
test ecx, ecx
je 0x407e5c
mov edx, dword [edx + eax]
mov ecx, dword [eax]
push esi
call fcn.004053a0
add esp, 4
test eax, eax
je 0x407e9a
mov eax, dword [ebp - 8]
mov edx, esi
push dword [eax]
xor eax, eax
cmp byte [ebp - 1], al
push ecx
mov ecx, dword [ebp - 0x14]
sete al
push eax
mov ecx, dword [ecx]
call fcn.00411ff0
add esp, 8
mov ecx, esi
push eax
call fcn.00411f60
mov cl, byte [ebp - 1]
mov edx, str..ptop
push eax
push str.part
push dword [edi]
call fcn.00405d40
add esp, 0x14
mov eax, dword [ebp - 0x14]
inc esi
mov ecx, dword [ebx + 8]
add eax, 4
mov edx, dword [ebp - 0x20]
mov dword [ebp - 0x14], eax
cmp esi, 0xc
jl 0x407e46
xor esi, esi
mov dword [ebp - 0x20], esi
nop dword [eax]
nop dword [eax + eax]
mov edx, dword [esi*8 + 0x61a0f0]
test edx, edx
je 0x40875a
mov ecx, edi
call fcn.004061f0
mov ecx, dword [ebx + 8]
mov dword [ebp - 0xc], eax
test ecx, ecx
je 0x407ef6
mov edx, dword [esi*8 + 0x61a0f0]
call fcn.004061f0
mov ecx, dword [ebx + 8]
mov esi, eax
mov eax, dword [ebp - 0xc]
jmp 0x407ef8
xor esi, esi
test eax, eax
jne 0x407f56
test esi, esi
je 0x40874a
cmp byte [ebp - 1], al
jne 0x40874a
mov edx, dword [esi]
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x407f14
sub ecx, esi
cmp ecx, 0xd
jae 0x407f39
mov ecx, edx
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x407f27
sub ecx, esi
mov eax, 0xd
sub eax, ecx
jmp 0x407f3b
xor eax, eax
push 0x4bd483
push eax
push edx
push str._n____memory___s___s_NULL__n
push 0
call fcn.00405c00
add esp, 0x14
jmp 0x40874a
test ecx, ecx
je 0x407f68
test esi, esi
jne 0x407f68
call fcn.004107c0
mov esi, eax
mov eax, dword [ebp - 0xc]
cmp byte [ebp - 1], 0
jne 0x407ff7
mov edx, eax
mov ecx, esi
call fcn.00406110
test eax, eax
jne 0x407fcf
xor ecx, ecx
mov dword [ebp - 0x18], ecx
cmp byte [ebx + 0xc], cl
je 0x40874a
mov eax, dword [0x61cc60]
test eax, eax
je 0x407fc7
push dword [edi]
push eax
call fcn.0040bfb0
add esp, 8
test eax, eax
je 0x407fc4
mov ecx, dword [ebp - 0xc]
mov edx, dword [ecx]
mov ecx, dword [0x61cc64]
call fcn.0040bfa0
mov ecx, dword [ebp - 0x18]
test eax, eax
mov eax, 1
cmovne ecx, eax
jmp 0x407fc7
mov ecx, dword [ebp - 0x18]
test ecx, ecx
je 0x40874a
mov eax, dword [ebp - 0xc]
mov edx, 0x4bdf70
push 2
push 0
mov ecx, dword [eax + 8]
call fcn.00405ce0
mov eax, dword [ebp - 0xc]
push dword [eax]
push str.____memory___s__n
push 0
call fcn.00405c00
add esp, 0x14
test esi, esi
je 0x408006
mov ecx, dword [ebp - 0xc]
mov eax, dword [esi + 0xc]
cmp eax, dword [ecx + 0xc]
je 0x40804c
mov eax, dword [ebp - 0xc]
mov edx, 0x5c1600
push dword [eax + 8]
cmp dword [eax + 0xc], 0
mov eax, 0x5c1604
push ecx
cmove edx, eax
mov ecx, str._if_memout_yn__
call fcn.0040a580
mov cl, byte [ebp - 1]
add esp, 4
mov edx, str..ptmm
push eax
mov eax, dword [ebp - 0xc]
push str.paged
push dword [eax]
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x40805e
mov eax, dword [ebp - 0xc]
mov ecx, dword [esi + 0x10]
mov edx, dword [eax + 0x10]
call fcn.00405fc0
test eax, eax
je 0x4080a5
mov eax, dword [ebp - 0xc]
push dword [eax + 8]
mov ecx, dword [eax + 0x10]
cmp ecx, 0x2000
push ecx
mov ecx, 0x5c14fc
mov eax, str.0x_x
cmovle eax, ecx
push eax
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, str..ptmm
push eax
mov eax, dword [ebp - 0xc]
push str.size
push dword [eax]
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x4080b7
mov eax, dword [ebp - 0xc]
mov ecx, dword [esi + 0x14]
mov edx, dword [eax + 0x14]
call fcn.00405fc0
test eax, eax
je 0x4080ee
mov eax, dword [ebp - 0xc]
push dword [eax + 8]
push dword [eax + 0x14]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, str..ptmm
push eax
mov eax, dword [ebp - 0xc]
push str.page_size
push dword [eax]
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x408100
mov eax, dword [ebp - 0xc]
mov ecx, dword [esi + 0x18]
mov edx, dword [eax + 0x18]
call fcn.00405fc0
test eax, eax
je 0x408137
mov eax, dword [ebp - 0xc]
push dword [eax + 8]
push dword [eax + 0x18]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, str..ptmm
push eax
mov eax, dword [ebp - 0xc]
push str.num_pages
push dword [eax]
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x408149
mov eax, dword [ebp - 0xc]
mov ecx, dword [esi + 0x1c]
mov edx, dword [eax + 0x1c]
call fcn.00405fc0
test eax, eax
je 0x40818d
mov eax, dword [ebp - 0xc]
push dword [eax + 8]
mov ecx, dword [eax + 0x1c]
cmp ecx, 0xffffffff
push ecx
mov ecx, 0x5c1554
mov eax, 0x5c14fc
cmovne eax, ecx
push eax
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, str..ptmm
push eax
mov eax, dword [ebp - 0xc]
push str.initval
push dword [eax]
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x40819f
mov eax, dword [ebp - 0xc]
mov ecx, dword [esi + 0x20]
mov edx, dword [eax + 0x20]
call fcn.00405fc0
test eax, eax
je 0x4081e3
mov eax, dword [ebp - 0xc]
push dword [eax + 8]
mov ecx, dword [eax + 0x20]
cmp ecx, 0xffffffff
push ecx
mov ecx, 0x5c1554
mov eax, 0x5c14fc
cmovne eax, ecx
push eax
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, str..ptmm
push eax
mov eax, dword [ebp - 0xc]
push str.bitmask
push dword [eax]
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x4081f5
mov eax, dword [ebp - 0xc]
mov ecx, dword [esi + 0x24]
mov edx, dword [eax + 0x24]
call fcn.00405fc0
test eax, eax
je 0x40822c
mov eax, dword [ebp - 0xc]
push dword [eax + 8]
push dword [eax + 0x24]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, str..ptmm
push eax
mov eax, dword [ebp - 0xc]
push str.n_word_writes
push dword [eax]
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x40823e
mov eax, dword [ebp - 0xc]
mov ecx, dword [esi + 0x28]
mov edx, dword [eax + 0x28]
call fcn.00405fc0
test eax, eax
je 0x408275
mov eax, dword [ebp - 0xc]
push dword [eax + 8]
push dword [eax + 0x28]
push str.0x_x
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, str..ptmm
push eax
mov eax, dword [ebp - 0xc]
push str.offset
push dword [eax]
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x408287
mov eax, dword [ebp - 0xc]
mov ecx, dword [esi + 0x2c]
mov edx, dword [eax + 0x2c]
call fcn.00405fc0
test eax, eax
je 0x4082be
mov eax, dword [ebp - 0xc]
push dword [eax + 8]
push dword [eax + 0x2c]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, str..ptmm
push eax
mov eax, dword [ebp - 0xc]
push str.min_write_delay
push dword [eax]
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x4082d0
mov eax, dword [ebp - 0xc]
mov ecx, dword [esi + 0x30]
mov edx, dword [eax + 0x30]
call fcn.00405fc0
test eax, eax
je 0x408307
mov eax, dword [ebp - 0xc]
push dword [eax + 8]
push dword [eax + 0x30]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, str..ptmm
push eax
mov eax, dword [ebp - 0xc]
push str.max_write_delay
push dword [eax]
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x408314
mov ecx, dword [ebp - 0xc]
mov eax, dword [esi + 0x34]
cmp eax, dword [ecx + 0x34]
je 0x40835d
jmp 0x408317
mov ecx, dword [ebp - 0xc]
push dword [ecx + 8]
cmp dword [ecx + 0x34], 0
mov eax, 0x5c1604
mov edx, 0x5c1600
push ecx
cmove edx, eax
mov ecx, str._if_memout_yn__
call fcn.0040a580
mov cl, byte [ebp - 1]
add esp, 4
mov edx, str..ptmm
push eax
mov eax, dword [ebp - 0xc]
push str.pwroff_after_write
push dword [eax]
push dword [edi]
call fcn.00405d40
mov ecx, dword [ebp - 0xc]
add esp, 0x14
test esi, esi
je 0x40837c
movzx eax, byte [esi + 0x38]
cmp al, byte [ecx + 0x38]
jne 0x408373
movzx eax, byte [esi + 0x39]
cmp al, byte [ecx + 0x39]
jne 0x408373
xor eax, eax
jmp 0x408378
sbb eax, eax
or eax, 1
test eax, eax
je 0x4083ba
push dword [ecx + 8]
movzx eax, byte [ecx + 0x39]
push eax
movzx eax, byte [ecx + 0x38]
push eax
push str.0x_02x_0x_02x
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 0xc
mov edx, str..ptmm
push eax
mov eax, dword [ebp - 0xc]
push str.readback
push dword [eax]
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x4083c9
mov ecx, dword [ebp - 0xc]
mov edx, dword [ecx + 0x3c]
mov ecx, dword [esi + 0x3c]
call fcn.00405fc0
test eax, eax
je 0x408400
mov eax, dword [ebp - 0xc]
push dword [eax + 8]
push dword [eax + 0x3c]
push 0x5c1554
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, str..ptmm
push eax
mov eax, dword [ebp - 0xc]
push str.mode
push dword [eax]
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x408412
mov eax, dword [ebp - 0xc]
mov ecx, dword [esi + 0x40]
mov edx, dword [eax + 0x40]
call fcn.00405fc0
test eax, eax
je 0x408449
mov eax, dword [ebp - 0xc]
push dword [eax + 8]
push dword [eax + 0x40]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, str..ptmm
push eax
mov eax, dword [ebp - 0xc]
push 0x5c19c0
push dword [eax]
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x40845b
mov eax, dword [ebp - 0xc]
mov ecx, dword [esi + 0x44]
mov edx, dword [eax + 0x44]
call fcn.00405fc0
test eax, eax
je 0x408492
mov eax, dword [ebp - 0xc]
push dword [eax + 8]
push dword [eax + 0x44]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, str..ptmm
push eax
mov eax, dword [ebp - 0xc]
push str.blocksize
push dword [eax]
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x4084a4
mov eax, dword [ebp - 0xc]
mov ecx, dword [esi + 0x48]
mov edx, dword [eax + 0x48]
call fcn.00405fc0
test eax, eax
je 0x4084db
mov eax, dword [ebp - 0xc]
push dword [eax + 8]
push dword [eax + 0x48]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, str..ptmm
push eax
mov eax, dword [ebp - 0xc]
push str.readsize
push dword [eax]
push dword [edi]
call fcn.00405d40
add esp, 0x14
test esi, esi
je 0x4084ed
mov eax, dword [ebp - 0xc]
mov ecx, dword [esi + 0x4c]
mov edx, dword [eax + 0x4c]
call fcn.00405fc0
test eax, eax
je 0x408520
mov eax, dword [ebp - 0xc]
push dword [eax + 8]
push dword [eax + 0x4c]
push 0x5c14fc
call fcn.00405b60
mov cl, byte [ebp - 1]
add esp, 8
mov edx, str..ptmm
push eax
mov eax, dword [ebp - 0xc]
push str.pollindex
push dword [eax]
push dword [edi]
call fcn.00405d40
add esp, 0x14
mov eax, dword [ebp - 0xc]
xor ecx, ecx
mov dword [ebp - 0x18], esi
sub dword [ebp - 0x18], eax
mov dword [ebp - 0x10], ecx
lea edx, [eax + 0x58]
mov dword [ebp - 0x14], edx
test esi, esi
je 0x408556
mov eax, dword [ebp - 0x18]
mov edx, dword [edx]
push ecx
mov ecx, dword [ebp - 0x14]
mov ecx, dword [eax + ecx]
call fcn.004053a0
add esp, 4
test eax, eax
je 0x408593
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x10]
push dword [eax + 8]
xor eax, eax
mov edx, ecx
cmp byte [ebp - 1], al
push ecx
sete al
push eax
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
call fcn.00411ff0
mov ecx, dword [ebp - 0x10]
add esp, 8
push eax
call fcn.00411f60
mov cl, byte [ebp - 1]
mov edx, str..ptmmop
push eax
mov eax, dword [ebp - 0xc]
push dword [eax]
push dword [edi]
call fcn.00405d40
add esp, 0x14
mov ecx, dword [ebp - 0x10]
mov edx, dword [ebp - 0x14]
inc ecx
mov eax, dword [ebp - 0xc]
add edx, 4
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0x14], edx
cmp ecx, 0xc
jl 0x408534
cmp byte [ebx + 0xc], 0
je 0x40861a
mov eax, dword [0x61cc60]
test eax, eax
je 0x40861a
push dword [edi]
push eax
call fcn.0040bfb0
mov esi, dword [ebp - 0xc]
add esp, 8
test eax, eax
je 0x40861d
mov edx, dword [esi]
mov ecx, dword [0x61cc64]
call fcn.0040bfa0
test eax, eax
je 0x40861d
mov edx, dword [0x61cc6c]
push 0
push ecx
mov ecx, str.meminj
call fcn.0040a580
mov cl, byte [ebp - 1]
add esp, 4
mov edx, str..ptmm
push eax
push dword [0x61cc68]
push dword [esi]
push dword [edi]
call fcn.00405d40
add esp, 0x14
mov dword [0x61cc60], 0
jmp 0x40861d
mov esi, dword [ebp - 0xc]
cmp byte [ebp - 1], 0
jne 0x408643
mov ecx, dword [esi + 8]
mov edx, 0x5c12e4
push 0
push 0
call fcn.00405ce0
push str.______n
push 0
call fcn.00405c00
add esp, 0x10
mov ecx, dword [edi + 0x158]
call fcn.0040fc70
mov dword [ebp - 0x10], eax
test eax, eax
je 0x40874a
nop dword [eax]
mov ecx, eax
call fcn.0040fc90
mov dword [ebp - 0x14], eax
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x408734
mov esi, dword [esi]
push esi
push dword [ecx]
mov dword [ebp - 0x18], esi
call fcn.0040bb60
add esp, 8
test eax, eax
je 0x408734
mov eax, dword [ebx + 8]
test eax, eax
je 0x408705
mov ecx, dword [eax + 0x158]
mov dword [ebp - 0x24], 0
call fcn.0040fc70
mov esi, eax
test esi, esi
je 0x408702
mov edi, dword [ebp - 0x24]
nop
mov ecx, esi
call fcn.0040fc90
mov ecx, dword [ebp - 0x14]
mov dword [ebp - 0x24], eax
push dword [ecx]
push dword [eax]
call fcn.0040bb60
add esp, 8
test eax, eax
je 0x4086ee
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 4]
test eax, eax
je 0x4086ee
push dword [ebp - 0x18]
push dword [eax]
call fcn.0040bb60
add esp, 8
test eax, eax
mov eax, 1
cmovne edi, eax
mov ecx, esi
call fcn.0040fc80
mov esi, eax
test esi, esi
jne 0x4086b0
test edi, edi
mov edi, dword [ebp - 0x1c]
jne 0x408734
mov esi, dword [ebp - 0x18]
cmp byte [ebp - 1], 0
mov eax, dword [ebp - 0x14]
push esi
mov eax, dword [eax]
push eax
je 0x408725
push dword [edi]
push str..ptmm_t_s_t_s_talias_t_s_n
push 0
call fcn.00405c00
add esp, 0x14
jmp 0x408734
push str._n____memory___s__n________alias___s___n______n
push 0
call fcn.00405c00
add esp, 0x10
mov ecx, dword [ebp - 0x10]
call fcn.0040fc80
mov esi, dword [ebp - 0xc]
mov dword [ebp - 0x10], eax
test eax, eax
jne 0x408660
mov esi, dword [ebp - 0x20]
inc esi
mov dword [ebp - 0x20], esi
cmp esi, 0x64
jb 0x407ec0
cmp byte [ebx + 0xc], 0
je 0x40883c
mov eax, dword [0x61cc70]
test eax, eax
je 0x4087b0
push dword [edi]
push eax
call fcn.0040bfb0
add esp, 8
test eax, eax
je 0x4087b0
mov edx, dword [0x61cc78]
push 0
push ecx
mov ecx, str.ptinj
call fcn.0040a580
mov cl, byte [ebp - 1]
add esp, 4
mov edx, 0x5c1444
push eax
push dword [0x61cc74]
push 0
push dword [edi]
call fcn.00405d40
add esp, 0x14
nop dword [eax]
mov eax, dword [0x61cc60]
test eax, eax
je 0x40883c
push dword [edi]
push eax
call fcn.0040bfb0
add esp, 8
test eax, eax
je 0x40883c
cmp byte [ebp - 1], 0
jne 0x4087e7
push dword [0x61cc64]
push str.____memory___s__n
push 0
call fcn.00405c00
add esp, 0xc
mov edx, dword [0x61cc6c]
push 0
push ecx
mov ecx, str.meminj
call fcn.0040a580
mov cl, byte [ebp - 1]
add esp, 4
mov edx, str..ptmm
push eax
push dword [0x61cc68]
push dword [0x61cc64]
push dword [edi]
call fcn.00405d40
mov al, byte [ebp - 1]
add esp, 0x14
mov dword [0x61cc60], 0
test al, al
jne 0x408865
push str.______n
push 0
call fcn.00405c00
add esp, 8
mov al, byte [ebp - 1]
test al, al
jne 0x408865
mov eax, dword [ebp - 8]
mov edx, 0x5c12e4
push 0
push 0
mov ecx, dword [eax]
call fcn.00405ce0
push 0x5c1a44
push 0
call fcn.00405c00
add esp, 0x10
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret