Function at 0x10003093
Capabilities:
Read file on windows

Disassembly:
sub esp, 0x28
push ebx
mov ebx, dword [eax + 4]
push ebp
mov ebp, dword [eax]
xor ecx, ecx
push esi
push edi
push ebp
mov dword [esp + 0x30], ecx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], ebx
call fcn.1000dcb5
mov ecx, dword [esp + 0x40]
add esp, 4
push ebp
lea edx, [esp + 0x18]
push 3
push edx
mov dword [ecx], eax
call fcn.1000e033
add esp, 0xc
xor eax, eax
mov edi, 0x10025aec
lea esi, [esp + 0x14]
mov ecx, 3
repe cmpsb byte [esi], byte es:[edi]
sete al
push 1
push 2
push ebp
mov word [0x1002b4dc], ax
call fcn.1000ddaa
add esp, 0xc
mov eax, ebp
lea esi, [esp + 0x28]
call fcn.10002990
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx]
add edx, dword [esp + 0x28]
push 0
push edx
push ebp
call fcn.1000ddaa
add esp, 0xc
mov eax, ebp
call fcn.100019e0
movzx eax, ax
test ax, ax
mov dword [esp + 0x34], eax
mov dword [esp + 0x28], 0
jle 0x100031f1
lea ecx, [ecx]
push ebp
mov esi, 1
push esi
lea eax, [esp + 0x1c]
push 2
push eax
mov dword [esp + 0x24], 0
call fcn.1000e456
mov ax, word [0x1002b4d8]
add esp, 0x10
cmp ax, si
jne 0x10002f13
cmp word [0x1002b4dc], 0
jmp 0x10002f1f
test ax, ax
jne 0x10002f32
cmp word [0x1002b4dc], si
jne 0x10002f32
mov eax, dword [esp + 0x14]
movzx cx, ah
mov ch, al
movzx edx, cx
mov dword [esp + 0x14], edx
push ebp
push esi
lea eax, [esp + 0x24]
push 2
push eax
call fcn.1000e456
mov ax, word [0x1002b4d8]
add esp, 0x10
cmp ax, si
jne 0x10002f58
cmp word [0x1002b4dc], 0
jmp 0x10002f64
test ax, ax
jne 0x10002f77
cmp word [0x1002b4dc], si
jne 0x10002f77
mov eax, dword [esp + 0x1c]
movzx cx, ah
mov ch, al
movzx edx, cx
mov dword [esp + 0x1c], edx
push ebp
push esi
lea eax, [esp + 0x20]
push 4
push eax
call fcn.1000e456
mov ax, word [0x1002b4d8]
add esp, 0x10
cmp ax, si
jne 0x10002fc8
cmp word [0x1002b4dc], 0
jne 0x10003001
mov eax, dword [esp + 0x18]
xor edx, edx
mov dh, byte [esp + 0x1a]
mov ecx, eax
shr ecx, 0x18
or ecx, edx
mov edx, eax
and edx, 0xff00
shl edx, 8
or ecx, edx
shl eax, 0x18
or eax, ecx
mov edi, eax
mov dword [esp + 0x18], edi
jmp 0x10003005
test ax, ax
jne 0x10003001
cmp word [0x1002b4dc], si
jne 0x10003001
mov eax, dword [esp + 0x18]
xor edx, edx
mov dh, byte [esp + 0x1a]
mov ecx, eax
shr ecx, 0x18
or ecx, edx
mov edx, eax
and edx, 0xff00
shl edx, 8
or ecx, edx
shl eax, 0x18
or eax, ecx
mov edi, eax
mov dword [esp + 0x18], edi
jmp 0x10003005
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
push edi
mov ecx, esi
call fcn.10001a50
movzx ebx, ax
add esp, 4
cmp bx, 0xffff
mov dword [esp + 0x30], ebx
je 0x10003254
cmp bx, 1
jne 0x10003061
mov eax, ebp
lea esi, [esp + 0x24]
call fcn.10002990
push ebp
call fcn.1000dcb5
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x40]
mov ecx, dword [eax]
add ecx, dword [esp + 0x28]
add esp, 4
push 0
push ecx
push ebp
call fcn.1000ddaa
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0x28]
add esp, 0xc
movzx eax, word [esp + 0x14]
cmp eax, 0x132
jg 0x1000314a
je 0x100030f7
sub eax, 0x100
cmp eax, 0x10
ja case.0x1000308c.258
movzx edx, byte [eax + 0x10003668]
jmp dword [edx*4 + 0x10003654]
mov ebx, dword [esp + 0x20]
push esi
mov edi, ebp
call fcn.10002770
add esp, 4
mov dword [ebx], 1
jmp 0x100031bf
mov ebx, dword [esp + 0x20]
push esi
mov edi, ebp
call fcn.100027d0
add esp, 4
mov dword [ebx], 1
jmp 0x100031bf
mov esi, dword [esp + 0x20]
mov ebx, ebp
call fcn.10001af0
mov eax, esi
mov dword [eax], 1
jmp 0x100031bf
mov esi, dword [esp + 0x20]
mov ebx, ebp
call fcn.10001b40
mov ecx, esi
mov dword [ecx], 1
jmp 0x100031bf
cmp edi, 0x14
mov esi, dword [esp + 0x20]
push ebp
jge 0x1000310e
lea edx, [edi + 1]
push edx
lea eax, [esi + 0x110]
push eax
jmp 0x10003117
push 0x14
lea ecx, [esi + 0x110]
push ecx
call fcn.1000e033
add esp, 0xc
cmp edi, 4
mov byte [esi + 0x10f], 1
mov byte [esi + 0xc], 1
jge 0x10003142
mov edx, 4
push 1
sub edx, edi
push edx
push ebp
call fcn.1000ddaa
add esp, 0xc
mov dword [esi], 1
jmp 0x100031bf
sub eax, 0x8769
je 0x100031b4
sub eax, 0xa
je 0x1000318a
sub eax, 0x3d32
je 0x10003172
cmp bx, 1
je 0x100031c7
push 1
push 4
push ebp
call fcn.1000ddaa
add esp, 0xc
jmp 0x100031bf
cmp bx, 1
jne 0x10003163
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x24]
mov dword [eax], edi
mov dword [eax + 4], ecx
mov byte [eax + 8], bl
jmp 0x100031c7
mov edx, dword [esp + 0x44]
mov esi, dword [esp + 0x20]
add esi, 0x39c
mov eax, ebp
mov byte [edx + 0xa], 0
call fcn.10004120
cmp byte [esi], 1
jne 0x100031bf
mov eax, dword [esp + 0x20]
mov dword [eax], 1
jmp 0x100031bf
mov esi, dword [esp + 0x40]
mov eax, ebp
call fcn.10002990
cmp word [esp + 0x30], 1
jne 0x100031d7
mov ecx, dword [esp + 0x2c]
push 0
push ecx
push ebp
call fcn.1000ddaa
add esp, 0xc
mov eax, dword [esp + 0x28]
add eax, 1
cmp ax, word [esp + 0x34]
mov dword [esp + 0x28], eax
jl 0x10002ee0
mov ebx, dword [esp + 0x20]
push ebp
mov esi, 1
push esi
lea ecx, [esp + 0x28]
push 4
push ecx
mov dword [esp + 0x30], 0
call fcn.1000e456
mov ax, word [0x1002b4d8]
add esp, 0x10
cmp ax, si
jne 0x100032b9
cmp word [0x1002b4dc], 0
jne 0x100032ec
mov eax, dword [esp + 0x20]
xor edx, edx
mov dh, byte [esp + 0x22]
mov ecx, eax
shr ecx, 0x18
or ecx, edx
mov edx, eax
and edx, 0xff00
shl edx, 8
or ecx, edx
shl eax, 0x18
or eax, ecx
jmp 0x100032f0
mov esi, dword [esp + 0x20]
push 0x298
lea edx, [esi + 0xc]
push 0
push edx
mov dword [esi], 0
mov byte [esi + 4], 0
call fcn.1000c0b0
add esp, 0xc
push 0xf8
lea eax, [esi + 0x2a4]
push 0
push eax
call fcn.1000c0b0
add esp, 0xc
mov byte [esi + 0x470], 0
push 0x4c
mov word [esi + 0x471], 0
push 0
add esi, 0x474
push esi
call fcn.1000c0b0
add esp, 0xc
xor ax, ax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret
test ax, ax
jne 0x100032ec
cmp word [0x1002b4dc], si
jne 0x100032ec
mov eax, dword [esp + 0x20]
xor edx, edx
mov dh, byte [esp + 0x22]
mov ecx, eax
shr ecx, 0x18
or ecx, edx
mov edx, eax
and edx, 0xff00
shl edx, 8
or ecx, edx
shl eax, 0x18
or eax, ecx
jmp 0x100032f0
mov eax, dword [esp + 0x20]
xor edi, edi
cmp eax, edi
je 0x100035e8
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx]
push edi
add edx, eax
push edx
push ebp
call fcn.1000ddaa
add esp, 0xc
push ebp
push esi
lea eax, [esp + 0x28]
push 2
push eax
mov dword [esp + 0x30], edi
call fcn.1000e456
mov ax, word [0x1002b4d8]
add esp, 0x10
cmp ax, si
jne 0x10003336
cmp word [0x1002b4dc], di
jmp 0x10003342
cmp ax, di
jne 0x10003355
cmp word [0x1002b4dc], si
jne 0x10003355
mov eax, dword [esp + 0x20]
movzx cx, ah
mov ch, al
movzx edx, cx
mov dword [esp + 0x20], edx
cmp word [esp + 0x20], di
mov dword [esp + 0x28], edi
jle 0x100035e8
push ebp
push esi
lea eax, [esp + 0x2c]
push 2
push eax
mov dword [esp + 0x34], 0
call fcn.1000e456
mov ax, word [0x1002b4d8]
add esp, 0x10
cmp ax, si
jne 0x10003392
cmp word [0x1002b4dc], 0
jmp 0x1000339e
test ax, ax
jne 0x100033b1
cmp word [0x1002b4dc], si
jne 0x100033b1
mov eax, dword [esp + 0x24]
movzx cx, ah
mov ch, al
movzx edx, cx
mov dword [esp + 0x24], edx
push ebp
push esi
lea eax, [esp + 0x24]
push 2
push eax
call fcn.1000e456
mov ax, word [0x1002b4d8]
add esp, 0x10
cmp ax, si
jne 0x100033d7
cmp word [0x1002b4dc], 0
jmp 0x100033e3
test ax, ax
jne 0x100033f6
cmp word [0x1002b4dc], si
jne 0x100033f6
mov eax, dword [esp + 0x1c]
movzx cx, ah
mov ch, al
movzx edx, cx
mov dword [esp + 0x1c], edx
push ebp
push esi
lea eax, [esp + 0x20]
push 4
push eax
call fcn.1000e456
mov ax, word [0x1002b4d8]
add esp, 0x10
cmp ax, si
jne 0x1000341c
cmp word [0x1002b4dc], 0
jmp 0x10003428
test ax, ax
jne 0x10003451
cmp word [0x1002b4dc], si
jne 0x10003451
mov eax, dword [esp + 0x18]
xor edx, edx
mov dh, byte [esp + 0x1a]
mov ecx, eax
shr ecx, 0x18
or ecx, edx
mov edx, eax
and edx, 0xff00
shl edx, 8
or ecx, edx
shl eax, 0x18
or eax, ecx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
push eax
call fcn.10001a50
movzx edi, ax
add esp, 4
cmp di, 0xffff
je 0x100035f3
cmp di, si
jne 0x1000352c
push ebp
push esi
lea ecx, [esp + 0x1c]
push 4
push ecx
mov dword [esp + 0x24], 0
call fcn.1000e456
mov ax, word [0x1002b4d8]
add esp, 0x10
cmp ax, si
jne 0x100034cd
cmp word [0x1002b4dc], 0
jne 0x10003502
mov eax, dword [esp + 0x14]
xor edx, edx
mov dh, byte [esp + 0x16]
mov ecx, eax
shr ecx, 0x18
or ecx, edx
mov edx, eax
and edx, 0xff00
shl edx, 8
or ecx, edx
shl eax, 0x18
or eax, ecx
mov esi, eax
jmp 0x10003506
test ax, ax
jne 0x10003502
cmp word [0x1002b4dc], si
jne 0x10003502
mov eax, dword [esp + 0x14]
xor edx, edx
mov dh, byte [esp + 0x16]
mov ecx, eax
shr ecx, 0x18
or ecx, edx
mov edx, eax
and edx, 0xff00
shl edx, 8
or ecx, edx
shl eax, 0x18
or eax, ecx
mov esi, eax
jmp 0x10003506
mov esi, dword [esp + 0x14]
push ebp
call fcn.1000dcb5
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x40]
mov ecx, dword [eax]
add esp, 4
push 0
add ecx, esi
push ecx
push ebp
call fcn.1000ddaa
add esp, 0xc
mov esi, 1
movzx eax, word [esp + 0x24]
sub eax, 0x201
je 0x1000357d
sub eax, esi
je 0x10003553
cmp di, si
je 0x100035c3
push esi
push 4
push ebp
call fcn.1000ddaa
add esp, 0xc
jmp 0x100035be
mov eax, ebp
lea esi, [esp + 0x24]
mov dword [esp + 0x24], 0
call fcn.10002990
mov edx, dword [esp + 0x24]
mov dword [ebx + 0x2a0], edx
mov byte [ebx + 0x29c], 1
mov byte [ebx + 0xc], 1
jmp 0x100035b7
mov eax, ebp
lea esi, [esp + 0x24]
mov dword [esp + 0x24], 0
call fcn.10002990
mov eax, dword [esp + 0x24]
test eax, eax
mov dword [ebx + 0x298], eax
mov byte [ebx + 0x294], 1
mov byte [ebx + 0xc], 1
je 0x100035b7
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx]
add edx, eax
mov dword [ebx + 0x298], edx
mov esi, 1
mov dword [ebx], esi
cmp di, si
jne 0x100035d3
mov eax, dword [esp + 0x2c]
push 0
push eax
push ebp
call fcn.1000ddaa
add esp, 0xc
mov eax, dword [esp + 0x28]
add eax, esi
cmp ax, word [esp + 0x20]
mov dword [esp + 0x28], eax
jl 0x10003364
mov ax, si
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret
push 0x298
lea ecx, [ebx + 0xc]
push 0
push ecx
mov dword [ebx], 0
mov byte [ebx + 4], 0
call fcn.1000c0b0
add esp, 0xc
push 0xf8
lea edx, [ebx + 0x2a4]
push 0
push edx
call fcn.1000c0b0
add esp, 0xc
mov byte [ebx + 0x470], 0
push 0x4c
mov word [ebx + 0x471], 0
push 0
add ebx, 0x474
push ebx
call fcn.1000c0b0
add esp, 0xc
pop edi
pop esi
pop ebp
xor ax, ax
pop ebx
add esp, 0x28
ret