Function at 0x473170
Capabilities:
Read file on windows

Disassembly:
mov eax, 0xc354
call fcn.004a6cb0
push ebx
mov ebx, ecx
mov dword [esp + 0x20], ebx
cmp edx, 0x132
jae 0x4731a1
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.0048a645
push ebx
push 1
lea eax, [esp + 0x2c]
push 2
push eax
call fcn.0048a645
movzx eax, word [esp + 0x34]
inc eax
push eax
call fcn.00489595
mov esi, eax
add esp, 0x24
test esi, esi
je 0x473963
movzx ecx, word [esp + 0x14]
push ebx
push ecx
push 1
push esi
call fcn.0048a645
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 0x473202
push esi
call fcn.00488f53
push ebx
push 1
lea eax, [esp + 0x24]
push 2
push eax
call fcn.0048a645
movzx eax, word [esp + 0x2c]
push 1
push eax
push ebx
call fcn.00489f05
push ebx
push 1
lea eax, [esp + 0x40]
push 2
push eax
call fcn.0048a645
movzx eax, word [esp + 0x48]
push 1
push eax
push ebx
call fcn.00489f05
mov si, word [esp + 0x71]
mov eax, 0x100
add esp, 0x3c
cmp si, ax
ja 0x473955
mov dx, word [esp + 0x39]
cmp dx, ax
ja 0x473955
mov cl, byte [esp + 0x34]
cmp cl, 0x20
ja 0x473955
mov eax, 0x2000
cmp word [esp + 0x3b], ax
ja 0x473955
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 0x47354e
nop
lea eax, [esi + 1]
mov ecx, eax
mov dword [esp + 0x24], eax
call fcn.004207c0
test al, al
je 0x47394e
movsx ebp, si
push ebx
mov esi, dword [ebp*4 + 0x550bc4]
mov dword [esp + 0x18], esi
call fcn.00490425
push ebx
movzx eax, al
push 0x60
mov word [esi + 0xd8], ax
lea eax, [esi + 3]
push 1
push eax
call fcn.0048a645
push ebx
call fcn.00490425
push ebx
mov byte [esi + 0x6b], al
call fcn.00490425
push ebx
mov byte [esi + 0x63], al
call fcn.00490425
push ebx
mov byte [esi + 0x65], al
call fcn.00490425
push ebx
mov byte [esi + 0x66], al
call fcn.00490425
push ebx
push 0x18
mov byte [esi + 0x67], al
lea eax, [esi + 0x74]
push 2
push eax
call fcn.0048a645
push ebx
call fcn.00490425
push ebx
mov byte [esi + 0x6c], al
call fcn.00490425
add esp, 0x40
mov byte [esi + 0x64], al
push ebx
call fcn.00490425
push ebx
mov byte [esi + 0x68], al
call fcn.00490425
push ebx
mov byte [esi + 0x69], al
call fcn.00490425
push ebx
push 0x18
mov byte [esi + 0x6a], al
lea eax, [esi + 0xa4]
push 2
push eax
call fcn.0048a645
push ebx
call fcn.00490425
push ebx
mov byte [esi + 0x6d], al
call fcn.00490425
push ebx
mov byte [esi + 0x6e], al
call fcn.00490425
push ebx
mov byte [esi + 0x6f], al
call fcn.00490425
push ebx
push 1
mov byte [esi + 0x70], al
lea eax, [esi + 0x72]
push 2
push eax
call fcn.0048a645
add esp, 0x3c
mov ecx, ebx
call fcn.00473120
mov edi, eax
test edi, edi
je 0x473963
mov ecx, edi
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x473400
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.00484660
push edi
call fcn.00488f53
xor eax, eax
add esp, 0x10
xor ebp, ebp
cmp ax, word [esi + 0xd8]
jge 0x473532
lea edi, [esi + 0xf5]
push ebx
call fcn.00490425
push 1
xor al, 0x80
push 1
push ebx
mov byte [edi - 1], al
call fcn.00489f05
push ebx
call fcn.00490425
push ebx
mov byte [edi], al
call fcn.00490425
push ebx
mov byte [edi + 0xb], al
call fcn.00490425
push ebx
push 1
mov byte [edi + 0xd], al
lea eax, [edi + 0xf]
push 4
push eax
call fcn.0048a645
push ebx
push 1
lea esi, [edi + 0x13]
push 4
push esi
call fcn.0048a645
push ebx
push 1
lea eax, [esp + 0x64]
push 4
push eax
call fcn.0048a645
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.0048a645
mov ax, word [esp + 0x20]
add esp, 0x10
test al, 1
je 0x4734c9
or byte [edi + 0xc], 0x10
test al, 0x10
je 0x4734d1
or byte [edi + 0xc], 1
test al, 0x20
je 0x4734d9
or byte [edi + 0xc], 2
mov ecx, ebx
call fcn.00473120
mov esi, eax
test esi, esi
je 0x473963
mov ecx, esi
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4734f0
sub ecx, edx
mov eax, 0x16
cmp ecx, 0x16
cmova ecx, eax
lea eax, [edi - 0x19]
push ecx
push esi
push eax
call fcn.00484660
push esi
call fcn.00488f53
mov eax, dword [esp + 0x24]
inc ebp
add esp, 0x10
add edi, 0xd8
movsx eax, word [eax + 0xd8]
cmp ebp, eax
jl 0x473444
mov eax, dword [esp + 0x24]
movzx ecx, word [esp + 0x3d]
movzx esi, ax
movsx eax, si
cmp eax, ecx
jl 0x4732f0
mov dx, word [esp + 0x39]
push ebx
movzx eax, dx
push eax
lea eax, [esp + 0x16c]
push 2
push eax
call fcn.0048a645
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.0048a645
xor ebp, ebp
xor eax, eax
add esp, 0x20
mov dword [esp + 0x10], ebp
cmp ax, word [esp + 0x3b]
jae 0x47373f
push ebx
push 1
lea eax, [esp + 0x24]
push 2
push eax
call fcn.0048a645
add esp, 0x10
cmp word [esp + 0x1c], 0
je 0x4738ab
movzx eax, word [esp + ebp*2 + 0x164]
push 5
push eax
call fcn.00488f48
mov esi, eax
add esp, 8
mov dword [esp + ebp*4 + 0x4364], esi
test esi, esi
je 0x4738a4
push ebx
call fcn.00489c23
mov edi, eax
push ebx
mov dword [esp + 0x30], edi
call fcn.00489c23
movzx ecx, word [esp + 0x24]
add esp, 8
add ecx, edi
cmp eax, ecx
jae 0x47372d
nop dword [eax]
push ebx
call fcn.00490425
add esp, 4
mov byte [esp + 0x14], al
test al, al
je 0x473729
push ebx
call fcn.00489c23
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.00489f05
push ebx
call fcn.00489c23
add esp, 0x10
cmp eax, edi
jae 0x4736fd
nop word [eax + eax]
push ebx
call fcn.00490425
add esp, 4
test al, al
je 0x4736fd
cmp al, 1
jne 0x473684
push ebx
call fcn.00490425
add esp, 4
inc al
mov byte [esi], al
jmp 0x4736ec
cmp al, 2
jne 0x473698
push ebx
call fcn.00490425
add esp, 4
inc al
mov byte [esi + 1], al
jmp 0x4736ec
lea ecx, [eax - 3]
cmp cl, 0xf
ja 0x4736b1
push ebx
mov byte [esi + 3], cl
call fcn.00490425
add esp, 4
mov byte [esi + 4], al
jmp 0x4736ec
lea ecx, [eax - 0x1a]
cmp cl, 3
ja 0x4736d3
movzx eax, al
push ebx
mov al, byte [eax + 0x4dd8f6]
mov byte [esi + 3], al
call fcn.00490425
add esp, 4
mov byte [esi + 4], al
jmp 0x4736ec
cmp al, 0x1e
jae 0x473893
test al, al
je 0x4736ec
push 1
push 1
push ebx
call fcn.00489f05
add esp, 0xc
push ebx
call fcn.00489c23
add esp, 4
cmp eax, edi
jb 0x473660
mov edx, dword [esp + 0x20]
inc ebp
add esi, 5
cmp ebp, dword [esp + 0x24]
jle 0x473640
push ebx
call fcn.00489c23
movzx ecx, word [esp + 0x20]
add esp, 4
add ecx, dword [esp + 0x28]
cmp eax, ecx
jb 0x473600
mov ebp, dword [esp + 0x10]
movzx eax, word [esp + 0x3b]
inc ebp
mov dword [esp + 0x10], ebp
cmp ebp, eax
jl 0x473596
xor esi, esi
xor eax, eax
mov dword [esp + 0x10], esi
cmp ax, word [esp + 0x39]
jae 0x473822
nop dword [eax]
nop word [eax + eax]
movzx edi, word [esp + esi*2 + 0x164]
mov dword [esp + 0x28], edi
test di, di
je 0x473810
mov eax, 0x100
cmp di, ax
ja 0x473810
push 1
push 0xa010
call fcn.00488f48
mov ebp, eax
add esp, 8
mov dword [esi*4 + 0x551ee0], ebp
test ebp, ebp
je 0x47394e
mov dl, byte [esp + 0x34]
mov word [esi*2 + 0x550fe0], di
xor edi, edi
movzx ecx, dl
test dl, dl
je 0x473810
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 0x473801
movzx esi, bx
test esi, esi
je 0x4737fd
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 0x4737e1
mov dl, byte [esp + 0x34]
mov esi, dword [esp + 0x10]
inc edi
movzx ecx, dl
add ebp, 5
cmp edi, ecx
jl 0x4737c0
mov ebx, dword [esp + 0x2c]
movzx eax, word [esp + 0x39]
inc esi
mov dword [esp + 0x10], esi
cmp esi, eax
jl 0x473760
mov dx, word [esp + 0x3d]
xor ecx, ecx
xor eax, eax
mov dword [esp + 0x10], ecx
cmp ax, dx
jae 0x473941
nop dword [eax + eax]
mov ebp, dword [ecx*4 + 0x550bc4]
test ebp, ebp
je 0x473931
xor eax, eax
xor edi, edi
cmp ax, word [ebp + 0xd8]
jge 0x473931
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.00489595
add esp, 4
mov dword [esi - 8], eax
test eax, eax
jne 0x4738e4
xor dl, dl
xor ecx, ecx
jmp 0x4738e9
push str.Error_loading_BEM:_illegal_pattern_opcode_
call dword [0x54e480]
mov ebp, dword [esp + 0x14]
jmp 0x4738b6
push str.Not_enough_memory_
jmp 0x4738b0
push str.Error_loading_BEM:_This_module_is_corrupt_
call dword [0x54e480]
add esp, 4
xor esi, esi
test ebp, ebp
jle 0x473963
push dword [esp + esi*4 + 0x4364]
call fcn.00488f53
inc esi
add esp, 4
cmp esi, ebp
jl 0x4738c3
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 0x47394e
movzx eax, byte [esp + 0x14]
push ebx
push dword [esi]
inc eax
push eax
push ecx
call fcn.0048a645
movzx eax, byte [esi - 3]
mov edx, dword [esi]
mov ecx, dword [esi - 0xc]
push eax
call fcn.004351b0
movsx eax, word [ebp + 0xd8]
inc edi
add esp, 0x14
add esi, 0xd8
cmp edi, eax
jl 0x473866
mov dx, word [esp + 0x3d]
mov ecx, dword [esp + 0x10]
inc ecx
movzx eax, dx
mov dword [esp + 0x10], ecx
cmp ecx, eax
jl 0x473840
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
add esp, 0xc354
ret
push str.Not_enough_memory_
jmp 0x47395a
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