Function at 0x473200
Capabilities:
Read file on windows

Disassembly:
mov eax, 0xc354
call fcn.004a6dd0
push ebx
mov ebx, ecx
mov dword [esp + 0x20], ebx
cmp edx, 0x132
jae 0x473231
push str.Error:_This_file_is_either_not_a_module__or_is_not_supported.
call dword [0x54e480]
add esp, 4
xor al, al
pop ebx
add esp, 0xc354
ret
push ebp
push esi
push edi
push ebx
push 0x132
lea eax, [esp + 0x38]
push 1
push eax
call fcn.0048a775
push ebx
push 1
lea eax, [esp + 0x2c]
push 2
push eax
call fcn.0048a775
movzx eax, word [esp + 0x34]
inc eax
push eax
call fcn.004896c5
mov esi, eax
add esp, 0x24
test esi, esi
je 0x4739f3
movzx ecx, word [esp + 0x14]
push ebx
push ecx
push 1
push esi
call fcn.0048a775
movzx eax, word [esp + 0x24]
mov edx, 0x5511e3
add esp, 0x10
mov ecx, esi
sub edx, esi
mov byte [eax + esi], 0
mov al, byte [ecx]
mov byte [edx + ecx], al
inc ecx
test al, al
jne 0x473292
push esi
call fcn.00489083
push ebx
push 1
lea eax, [esp + 0x24]
push 2
push eax
call fcn.0048a775
movzx eax, word [esp + 0x2c]
push 1
push eax
push ebx
call fcn.0048a035
push ebx
push 1
lea eax, [esp + 0x40]
push 2
push eax
call fcn.0048a775
movzx eax, word [esp + 0x48]
push 1
push eax
push ebx
call fcn.0048a035
mov si, word [esp + 0x71]
mov eax, 0x100
add esp, 0x3c
cmp si, ax
ja 0x4739e5
mov dx, word [esp + 0x39]
cmp dx, ax
ja 0x4739e5
mov cl, byte [esp + 0x34]
cmp cl, 0x20
ja 0x4739e5
mov eax, 0x2000
cmp word [esp + 0x3b], ax
ja 0x4739e5
movzx eax, byte [esp + 0x161]
mov edi, 0x551d96
shr eax, 1
and eax, 1
mov word [0x551e9e], si
mov byte [0x551ec0], al
lea esi, [esp + 0x41]
movzx eax, cl
mov ecx, 0x40
mov dword [0x551eac], eax
movzx eax, word [esp + 0x37]
mov word [0x551ea0], ax
movzx eax, byte [esp + 0x40]
mov word [0x551ea2], ax
movzx eax, byte [esp + 0x3f]
mov word [0x551ea4], ax
xor eax, eax
rep movsd dword es:[edi], dword [esi]
xor esi, esi
cmp ax, word [esp + 0x3d]
jae 0x4735de
nop
lea eax, [esi + 1]
mov ecx, eax
mov dword [esp + 0x24], eax
call fcn.004208e0
test al, al
je 0x4739de
movsx ebp, si
push ebx
mov esi, dword [ebp*4 + 0x550bc4]
mov dword [esp + 0x18], esi
call fcn.00490555
push ebx
movzx eax, al
push 0x60
mov word [esi + 0xd8], ax
lea eax, [esi + 3]
push 1
push eax
call fcn.0048a775
push ebx
call fcn.00490555
push ebx
mov byte [esi + 0x6b], al
call fcn.00490555
push ebx
mov byte [esi + 0x63], al
call fcn.00490555
push ebx
mov byte [esi + 0x65], al
call fcn.00490555
push ebx
mov byte [esi + 0x66], al
call fcn.00490555
push ebx
push 0x18
mov byte [esi + 0x67], al
lea eax, [esi + 0x74]
push 2
push eax
call fcn.0048a775
push ebx
call fcn.00490555
push ebx
mov byte [esi + 0x6c], al
call fcn.00490555
add esp, 0x40
mov byte [esi + 0x64], al
push ebx
call fcn.00490555
push ebx
mov byte [esi + 0x68], al
call fcn.00490555
push ebx
mov byte [esi + 0x69], al
call fcn.00490555
push ebx
push 0x18
mov byte [esi + 0x6a], al
lea eax, [esi + 0xa4]
push 2
push eax
call fcn.0048a775
push ebx
call fcn.00490555
push ebx
mov byte [esi + 0x6d], al
call fcn.00490555
push ebx
mov byte [esi + 0x6e], al
call fcn.00490555
push ebx
mov byte [esi + 0x6f], al
call fcn.00490555
push ebx
push 1
mov byte [esi + 0x70], al
lea eax, [esi + 0x72]
push 2
push eax
call fcn.0048a775
add esp, 0x3c
mov ecx, ebx
call fcn.004731b0
mov edi, eax
test edi, edi
je 0x4739f3
mov ecx, edi
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x473490
sub ecx, edx
mov eax, 0x16
cmp ecx, 0x16
cmova ecx, eax
imul eax, ebp, 0x17
push ecx
push edi
add eax, 0x55120f
push eax
call fcn.00484790
push edi
call fcn.00489083
xor eax, eax
add esp, 0x10
xor ebp, ebp
cmp ax, word [esi + 0xd8]
jge 0x4735c2
lea edi, [esi + 0xf5]
push ebx
call fcn.00490555
push 1
xor al, 0x80
push 1
push ebx
mov byte [edi - 1], al
call fcn.0048a035
push ebx
call fcn.00490555
push ebx
mov byte [edi], al
call fcn.00490555
push ebx
mov byte [edi + 0xb], al
call fcn.00490555
push ebx
push 1
mov byte [edi + 0xd], al
lea eax, [edi + 0xf]
push 4
push eax
call fcn.0048a775
push ebx
push 1
lea esi, [edi + 0x13]
push 4
push esi
call fcn.0048a775
push ebx
push 1
lea eax, [esp + 0x64]
push 4
push eax
call fcn.0048a775
mov eax, dword [esp + 0x6c]
add esp, 0x4c
sub eax, dword [esi]
mov dword [edi + 0x17], eax
lea eax, [esp + 0x10]
push ebx
push 1
push 2
push eax
call fcn.0048a775
mov ax, word [esp + 0x20]
add esp, 0x10
test al, 1
je 0x473559
or byte [edi + 0xc], 0x10
test al, 0x10
je 0x473561
or byte [edi + 0xc], 1
test al, 0x20
je 0x473569
or byte [edi + 0xc], 2
mov ecx, ebx
call fcn.004731b0
mov esi, eax
test esi, esi
je 0x4739f3
mov ecx, esi
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x473580
sub ecx, edx
mov eax, 0x16
cmp ecx, 0x16
cmova ecx, eax
lea eax, [edi - 0x19]
push ecx
push esi
push eax
call fcn.00484790
push esi
call fcn.00489083
mov eax, dword [esp + 0x24]
inc ebp
add esp, 0x10
add edi, 0xd8
movsx eax, word [eax + 0xd8]
cmp ebp, eax
jl 0x4734d4
mov eax, dword [esp + 0x24]
movzx ecx, word [esp + 0x3d]
movzx esi, ax
movsx eax, si
cmp eax, ecx
jl 0x473380
mov dx, word [esp + 0x39]
push ebx
movzx eax, dx
push eax
lea eax, [esp + 0x16c]
push 2
push eax
call fcn.0048a775
movzx eax, word [esp + 0x49]
movzx ecx, byte [esp + 0x44]
imul ecx, eax
lea eax, [esp + 0x374]
push ebx
push ecx
push 2
push eax
call fcn.0048a775
xor ebp, ebp
xor eax, eax
add esp, 0x20
mov dword [esp + 0x10], ebp
cmp ax, word [esp + 0x3b]
jae 0x4737cf
push ebx
push 1
lea eax, [esp + 0x24]
push 2
push eax
call fcn.0048a775
add esp, 0x10
cmp word [esp + 0x1c], 0
je 0x47393b
movzx eax, word [esp + ebp*2 + 0x164]
push 5
push eax
call fcn.00489078
mov esi, eax
add esp, 8
mov dword [esp + ebp*4 + 0x4364], esi
test esi, esi
je 0x473934
push ebx
call fcn.00489d53
mov edi, eax
push ebx
mov dword [esp + 0x30], edi
call fcn.00489d53
movzx ecx, word [esp + 0x24]
add esp, 8
add ecx, edi
cmp eax, ecx
jae 0x4737bd
nop dword [eax]
push ebx
call fcn.00490555
add esp, 4
mov byte [esp + 0x14], al
test al, al
je 0x4737b9
push ebx
call fcn.00489d53
mov cl, byte [esp + 0x18]
mov edx, eax
movzx eax, byte [esp + 0x18]
and cl, 0x1f
dec cl
mov dword [esp + 0x24], edx
movzx edi, cl
add esp, 4
add edi, edx
xor ebp, ebp
shr eax, 5
mov dword [esp + 0x24], eax
push 0
push edx
push ebx
call fcn.0048a035
push ebx
call fcn.00489d53
add esp, 0x10
cmp eax, edi
jae 0x47378d
nop word [eax + eax]
push ebx
call fcn.00490555
add esp, 4
test al, al
je 0x47378d
cmp al, 1
jne 0x473714
push ebx
call fcn.00490555
add esp, 4
inc al
mov byte [esi], al
jmp 0x47377c
cmp al, 2
jne 0x473728
push ebx
call fcn.00490555
add esp, 4
inc al
mov byte [esi + 1], al
jmp 0x47377c
lea ecx, [eax - 3]
cmp cl, 0xf
ja 0x473741
push ebx
mov byte [esi + 3], cl
call fcn.00490555
add esp, 4
mov byte [esi + 4], al
jmp 0x47377c
lea ecx, [eax - 0x1a]
cmp cl, 3
ja 0x473763
movzx eax, al
push ebx
mov al, byte [eax + 0x4dd866]
mov byte [esi + 3], al
call fcn.00490555
add esp, 4
mov byte [esi + 4], al
jmp 0x47377c
cmp al, 0x1e
jae 0x473923
test al, al
je 0x47377c
push 1
push 1
push ebx
call fcn.0048a035
add esp, 0xc
push ebx
call fcn.00489d53
add esp, 4
cmp eax, edi
jb 0x4736f0
mov edx, dword [esp + 0x20]
inc ebp
add esi, 5
cmp ebp, dword [esp + 0x24]
jle 0x4736d0
push ebx
call fcn.00489d53
movzx ecx, word [esp + 0x20]
add esp, 4
add ecx, dword [esp + 0x28]
cmp eax, ecx
jb 0x473690
mov ebp, dword [esp + 0x10]
movzx eax, word [esp + 0x3b]
inc ebp
mov dword [esp + 0x10], ebp
cmp ebp, eax
jl 0x473626
xor esi, esi
xor eax, eax
mov dword [esp + 0x10], esi
cmp ax, word [esp + 0x39]
jae 0x4738b2
nop dword [eax]
nop word [eax + eax]
movzx edi, word [esp + esi*2 + 0x164]
mov dword [esp + 0x28], edi
test di, di
je 0x4738a0
mov eax, 0x100
cmp di, ax
ja 0x4738a0
push 1
push 0xa010
call fcn.00489078
mov ebp, eax
add esp, 8
mov dword [esi*4 + 0x551ee0], ebp
test ebp, ebp
je 0x4739de
mov dl, byte [esp + 0x34]
mov word [esi*2 + 0x550fe0], di
xor edi, edi
movzx ecx, dl
test dl, dl
je 0x4738a0
mov ebx, dword [esp + 0x28]
nop dword [eax]
imul ecx, esi
add ecx, edi
movzx eax, word [esp + ecx*2 + 0x364]
mov ecx, dword [esp + eax*4 + 0x4364]
test ecx, ecx
je 0x473891
movzx esi, bx
test esi, esi
je 0x47388d
mov edx, ebp
mov eax, dword [ecx]
lea ecx, [ecx + 5]
mov dword [edx], eax
mov al, byte [ecx - 1]
mov byte [edx + 4], al
add edx, 0xa0
sub esi, 1
jne 0x473871
mov dl, byte [esp + 0x34]
mov esi, dword [esp + 0x10]
inc edi
movzx ecx, dl
add ebp, 5
cmp edi, ecx
jl 0x473850
mov ebx, dword [esp + 0x2c]
movzx eax, word [esp + 0x39]
inc esi
mov dword [esp + 0x10], esi
cmp esi, eax
jl 0x4737f0
mov dx, word [esp + 0x3d]
xor ecx, ecx
xor eax, eax
mov dword [esp + 0x10], ecx
cmp ax, dx
jae 0x4739d1
nop dword [eax + eax]
mov ebp, dword [ecx*4 + 0x550bc4]
test ebp, ebp
je 0x4739c1
xor eax, eax
xor edi, edi
cmp ax, word [ebp + 0xd8]
jge 0x4739c1
lea esi, [ebp + 0x104]
mov al, byte [esi - 3]
shr al, 4
and al, 1
mov byte [esp + 0x14], al
mov eax, dword [esi]
lea ecx, [eax + eax]
cmove ecx, eax
add ecx, 0x1f
push ecx
call fcn.004896c5
add esp, 4
mov dword [esi - 8], eax
test eax, eax
jne 0x473974
xor dl, dl
xor ecx, ecx
jmp 0x473979
push str.Error_loading_BEM:_illegal_pattern_opcode_
call dword [0x54e480]
mov ebp, dword [esp + 0x14]
jmp 0x473946
push str.Not_enough_memory_
jmp 0x473940
push str.Error_loading_BEM:_This_module_is_corrupt_
call dword [0x54e480]
add esp, 4
xor esi, esi
test ebp, ebp
jle 0x4739f3
push dword [esp + esi*4 + 0x4364]
call fcn.00489083
inc esi
add esp, 4
cmp esi, ebp
jl 0x473953
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0xc354
ret
mov dl, 1
lea ecx, [eax + 0xf]
mov dword [esi - 0xc], ecx
test dl, dl
je 0x4739de
movzx eax, byte [esp + 0x14]
push ebx
push dword [esi]
inc eax
push eax
push ecx
call fcn.0048a775
movzx eax, byte [esi - 3]
mov edx, dword [esi]
mov ecx, dword [esi - 0xc]
push eax
call fcn.00435270
movsx eax, word [ebp + 0xd8]
inc edi
add esp, 0x14
add esi, 0xd8
cmp edi, eax
jl 0x4738f6
mov dx, word [esp + 0x3d]
mov ecx, dword [esp + 0x10]
inc ecx
movzx eax, dx
mov dword [esp + 0x10], ecx
cmp ecx, eax
jl 0x4738d0
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 0xc354
ret
push str.Not_enough_memory_
jmp 0x4739ea
push str.Error_loading_BEM:_The_module_is_corrupt_
call dword [0x54e480]
add esp, 4
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0xc354
ret