Function at 0x402b30
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x60
mov esi, eax
mov dword [ebp - 0x5c], edx
lea eax, [eax + 0x64]
push 0xa
mov edi, ecx
push 0
push eax
call sub.msvcrt.dll_strtoul
add esp, 0x10
mov edx, eax
test eax, eax
js 0x402c40
and eax, 1
lea ebx, [eax + edx]
mov eax, dword [esi + 0x28]
add eax, 0x3c
add eax, ebx
test edi, edi
mov dword [esi + 0x28], eax
je 0x402be0
cmp dword [ebp - 0x5c], 8
ja 0x402d56
cmp ebx, dword [ebp - 0x5c]
jb 0x402bc0
mov eax, dword [esi + 4]
lea edi, [ebp - 0x18]
push eax
mov eax, dword [ebp - 0x5c]
push eax
push 1
push edi
call sub.msvcrt.dll_fread
add esp, 0x10
mov dword [ebp - 0x2c], eax
cmp dword [ebp - 0x5c], eax
je 0x402c6d
push eax
push eax
mov esi, dword [esi]
push esi
push str._s:_failed_to_read_archive_index_n
call fcn.004025d0
xor eax, eax
add esp, 0x10
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
push eax
push eax
mov eax, dword [esi]
push eax
push str._s:_the_archive_index_is_empty_n
call fcn.004025d0
xor eax, eax
add esp, 0x10
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
push eax
push 1
push ebx
mov edi, dword [esi + 4]
push edi
call fcn.00405360
add esp, 0x10
test eax, eax
jne 0x402c27
mov eax, dword [esi + 4]
push eax
lea eax, [esi + 0x34]
push 0x3c
push 1
push eax
call sub.msvcrt.dll_fread
add esp, 0x10
cmp eax, 0x3c
je 0x402c60
test eax, eax
je 0x402c60
push eax
push eax
mov eax, dword [esi]
push eax
push str._s:_failed_to_read_archive_header_following_archive_index_n
call fcn.004025d0
xor eax, eax
add esp, 0x10
jmp 0x402bb4
push ebx
push ebx
mov ecx, dword [esi]
push ecx
push str._s:_failed_to_skip_archive_symbol_table_n
call fcn.004025d0
xor eax, eax
add esp, 0x10
jmp 0x402bb4
push eax
push edx
mov eax, dword [esi]
push eax
push str._s:_invalid_archive_header_size:__ld_n
call fcn.004025d0
xor eax, eax
add esp, 0x10
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
lea esp, [ebp - 0xc]
mov eax, 1
pop ebx
pop esi
pop edi
pop ebp
ret
push eax
push eax
mov ecx, dword [ebp - 0x5c]
push ecx
push edi
call fcn.00402860
mov dword [ebp - 0x54], 0
mov dword [ebp - 0x50], eax
mov dword [esi + 8], eax
mov eax, dword [ebp - 0x5c]
mov dword [ebp - 0x4c], edx
mov dword [ebp - 0x48], eax
mov edi, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x48]
mov dword [esi + 0xc], edx
imul edi, eax
mov edx, dword [ebp - 0x5c]
mov eax, dword [ebp - 0x50]
sub ebx, edx
add esp, 0x10
mul dword [ebp - 0x48]
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x58], ebx
lea ebx, [edi + edx]
mov dword [ebp - 0x44], 0
mov ecx, eax
cmp dword [ebp - 0x54], ebx
jb 0x402d30
cmp dword [ebp - 0x58], eax
jb 0x402d30
cmp dword [ebp - 0x4c], 0
ja 0x402d30
mov edx, dword [ebp - 0x58]
cmp dword [ebp - 0x50], edx
ja 0x402d30
sub esp, 0xc
push ecx
call sub.msvcrt.dll_malloc
add esp, 0x10
mov dword [ebp - 0x3c], eax
test eax, eax
je 0x402e2f
mov eax, dword [esi + 4]
push eax
mov edi, dword [esi + 8]
push edi
mov ebx, dword [ebp - 0x5c]
push ebx
mov ecx, dword [ebp - 0x3c]
push ecx
call sub.msvcrt.dll_fread
mov dword [ebp - 0x38], eax
mov edx, dword [esi + 8]
mov eax, dword [ebp - 0x38]
add esp, 0x10
xor eax, edx
mov dword [ebp - 0x34], 0
or eax, dword [esi + 0xc]
je 0x402d6b
sub esp, 0xc
mov eax, dword [ebp - 0x3c]
push eax
call sub.msvcrt.dll_free
pop edi
pop eax
jmp 0x402ba2
sub esp, 0xc
mov eax, dword [ebp - 0x24]
push eax
mov eax, dword [ebp - 0x2c]
push eax
mov eax, dword [ebp - 0x50]
push eax
mov eax, dword [esi]
push eax
push str._s:_the_archive_index_is_supposed_to_have_0x_lx_entries_of__d_bytes__but_the_size_is_only_0x_lx_n
call fcn.004025d0
xor eax, eax
add esp, 0x20
jmp 0x402bb4
push edx
push 0x1ed
push str._usr_local_google_buildbot_src_android_gcc_toolchain_build_.._binutils_binutils_2.27_binutils_elfcomm.c
push str.sizeof_ar_index___sizeof_integer_buffer
call sub.msvcrt.dll__assert
sub esp, 0xc
mov eax, dword [ebp - 0x38]
mov edx, dword [ebp - 0x34]
shld edx, eax, 3
shl eax, 3
push eax
call sub.msvcrt.dll_malloc
add esp, 0x10
mov dword [esi + 0x10], eax
test eax, eax
je 0x402e8d
mov eax, dword [esi + 8]
or eax, dword [esi + 0xc]
je 0x402dd9
mov edi, dword [ebp - 0x3c]
mov dword [ebp - 0x28], 0
mov ebx, dword [ebp - 0x28]
mov ecx, dword [esi + 0x10]
push edx
push edx
mov eax, dword [ebp - 0x5c]
lea ebx, [ecx + ebx*8]
push eax
push edi
call fcn.00402860
add esp, 0x10
mov dword [ebx], eax
mov eax, dword [ebp - 0x28]
inc eax
mov dword [ebx + 4], edx
mov dword [ebp - 0x28], eax
xor edx, edx
mov eax, dword [ebp - 0x5c]
add edi, eax
mov eax, dword [ebp - 0x28]
cmp edx, dword [esi + 0xc]
jb 0x402da1
cmp eax, dword [esi + 8]
jb 0x402da1
mov eax, dword [ebp - 0x38]
mov ebx, dword [ebp - 0x44]
imul ebx, eax
mov edx, dword [ebp - 0x34]
mov eax, dword [ebp - 0x48]
imul edx, eax
mov eax, dword [ebp - 0x48]
add ebx, edx
mul dword [ebp - 0x38]
sub esp, 0xc
mov dword [ebp - 0x68], eax
add edx, ebx
mov eax, dword [ebp - 0x68]
mov ebx, dword [ebp - 0x24]
mov edi, dword [ebp - 0x3c]
mov dword [ebp - 0x64], edx
sub ebx, eax
push edi
call sub.msvcrt.dll_free
add esp, 0x10
test ebx, ebx
jne 0x402e46
push ebx
push ebx
mov ecx, dword [esi]
push ecx
push str._s:_the_archive_has_an_index_but_no_symbols_n
call fcn.004025d0
xor eax, eax
add esp, 0x10
jmp 0x402bb4
sub esp, 0xc
push str.Out_of_memory_whilst_trying_to_read_archive_symbol_index_n
call fcn.004025d0
xor eax, eax
add esp, 0x10
jmp 0x402bb4
sub esp, 0xc
push ebx
call sub.msvcrt.dll_malloc
add esp, 0x10
mov dword [esi + 0x14], eax
test eax, eax
je 0x402eaf
mov dword [esi + 0x18], ebx
mov edx, dword [esi + 4]
push edx
push ebx
push 1
push eax
call sub.msvcrt.dll_fread
add esp, 0x10
cmp ebx, eax
je 0x402bf4
push eax
push eax
mov eax, dword [esi]
push eax
push str._s:_failed_to_read_archive_index_symbol_table_n
call fcn.004025d0
xor eax, eax
add esp, 0x10
jmp 0x402bb4
sub esp, 0xc
mov ebx, dword [ebp - 0x3c]
push ebx
call sub.msvcrt.dll_free
mov dword [esp], str.Out_of_memory_whilst_trying_to_convert_the_archive_symbol_index_n
call fcn.004025d0
xor eax, eax
add esp, 0x10
jmp 0x402bb4
sub esp, 0xc
push str.Out_of_memory_whilst_trying_to_read_archive_index_symbol_table_n
call fcn.004025d0
xor eax, eax
add esp, 0x10
jmp 0x402bb4