Function at 0x5143a4
Capabilities:
Get file size
Parse pe header

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffe88
push ebx
push esi
push edi
xor ecx, ecx
mov dword [ebp - 0x178], ecx
mov dword [ebp - 0x15c], ecx
mov dword [ebp - 0x158], ecx
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 4], ecx
mov dword [ebp - 8], edx
mov esi, eax
xor eax, eax
push ebp
push 0x515230
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 8]
cmp dword [eax], 0
jne 0x514401
lea eax, [esi + 0x120]
mov edx, 0x51524c
call fcn.00404fb0
mov dword [ebp - 0xc], 0xffffff91
jmp 0x5151f1
push 0
push 0
push 0
mov eax, dword [esi + 4]
push eax
call sub.kernel32.dll_SetFilePointer
push 0
mov eax, dword [esi + 4]
push eax
call sub.kernel32.dll_GetFileSize
mov ebx, eax
mov dword [esi + 0x128], ebx
cmp ebx, 0xffffffff
jne 0x514444
lea eax, [esi + 0x120]
mov edx, 0x515268
call fcn.00404fb0
mov dword [ebp - 0xc], 0xffffff85
jmp 0x5151f1
mov eax, dword [esi + 0x128]
push eax
lea eax, [ebp - 4]
mov ecx, 1
mov edx, dword [0x514380]
call fcn.004069c4
add esp, 4
mov ecx, dword [esi + 0x128]
mov edx, dword [ebp - 4]
mov eax, esi
call fcn.00516000
cdq
push edx
push eax
mov eax, dword [esi + 0x128]
xor edx, edx
cmp edx, dword [esp + 4]
jne 0x514485
cmp eax, dword [esp]
pop edx
pop eax
je 0x5144a3
lea eax, [esi + 0x120]
mov edx, 0x515284
call fcn.00404fb0
xor eax, eax
mov dword [ebp - 0xc], eax
jmp 0x5151f1
lea ecx, [ebp - 0x48]
mov eax, dword [ebp - 4]
mov edx, dword [esi + 0x128]
call fcn.004c7e38
push esi
lea edi, [esi + 0x1154]
lea esi, [ebp - 0x48]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
pop esi
push 0
lea eax, [ebp - 4]
mov ecx, 1
mov edx, dword [0x514380]
call fcn.004069c4
add esp, 4
push 0
push 0
push 0
mov eax, dword [esi + 4]
push eax
call sub.kernel32.dll_SetFilePointer
lea edx, [ebp - 0xe]
mov ecx, 2
mov eax, esi
call fcn.00516000
cmp eax, 2
je 0x514518
lea eax, [esi + 0x120]
mov edx, 0x5152a4
call fcn.00404fb0
xor eax, eax
mov dword [ebp - 0xc], eax
jmp 0x5151f1
cmp word [ebp - 0xe], 0x5a4d
je 0x51456a
cmp word [ebp - 0xe], 0x4d5a
je 0x51456a
lea eax, [esi + 0x120]
mov edx, 0x5152c8
call fcn.00404fb0
cmp word [ebp - 0xe], 0x7a6d
jne 0x514560
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edi, eax
mov esi, 0x5152e0
mov ecx, 5
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
mov dword [ebp - 0xc], 1
jmp 0x5151f1
xor eax, eax
mov dword [ebp - 0xc], eax
jmp 0x5151f1
push 1
push 0
push 0x3a
mov eax, dword [esi + 4]
push eax
call sub.kernel32.dll_SetFilePointer
lea edx, [ebp - 0x14]
mov ecx, 4
mov eax, esi
call fcn.00516000
cmp eax, 4
je 0x5145d6
lea eax, [esi + 0x120]
mov edx, 0x515300
call fcn.00404fb0
mov eax, dword [ebp - 8]
mov eax, dword [eax]
test dword [eax + 0x11c], 0x40
jle 0x5145cc
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edi, eax
mov esi, 0x515320
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov dword [ebp - 0xc], 1
jmp 0x5151f1
xor eax, eax
mov dword [ebp - 0xc], eax
jmp 0x5151f1
cmp dword [ebp - 0x14], 0
jne 0x5145f6
lea eax, [esi + 0x120]
mov edx, 0x51533c
call fcn.00404fb0
xor eax, eax
mov dword [ebp - 0xc], eax
jmp 0x5151f1
push 0
push 0
mov eax, dword [ebp - 0x14]
push eax
mov eax, dword [esi + 4]
push eax
call sub.kernel32.dll_SetFilePointer
test eax, eax
jae 0x514625
lea eax, [esi + 0x120]
mov edx, 0x515354
call fcn.00404fb0
xor eax, eax
mov dword [ebp - 0xc], eax
jmp 0x5151f1
lea edx, [esi + 8]
mov ecx, 0x18
mov eax, esi
call fcn.00516000
cmp eax, 0x18
je 0x514653
lea eax, [esi + 0x120]
mov edx, 0x515374
call fcn.00404fb0
xor eax, eax
mov dword [ebp - 0xc], eax
jmp 0x5151f1
cmp dword [esi + 8], 0x4550
je 0x514676
lea eax, [esi + 0x120]
mov edx, 0x515394
call fcn.00404fb0
xor eax, eax
mov dword [ebp - 0xc], eax
jmp 0x5151f1
movzx eax, word [esi + 0x1e]
test ax, 0x2000
jbe 0x51468a
mov byte [esi + 0x118], 0
jmp 0x514698
test ax, 2
jbe 0x514698
mov byte [esi + 0x118], 1
movzx eax, word [esi + 0xe]
mov word [esi + 0x134], ax
movzx eax, word [esi + 0x134]
cmp ax, 1
jb 0x5146ba
cmp ax, 0x60
jbe 0x51473c
mov eax, dword [ebp - 8]
mov eax, dword [eax]
test dword [eax + 0x11c], 0x40
jle 0x5146e9
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edi, eax
mov esi, 0x515320
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov dword [ebp - 0xc], 1
jmp 0x5151f1
movzx ebx, word [esi + 0x134]
test bx, bx
jbe 0x514722
lea eax, [ebp - 0x4c]
push eax
movzx eax, bx
mov dword [ebp - 0x54], eax
mov byte [ebp - 0x50], 0
lea edx, [ebp - 0x54]
xor ecx, ecx
mov eax, 0x5153c4
call fcn.0040c808
mov edx, dword [ebp - 0x4c]
lea eax, [esi + 0x120]
call fcn.00404fb0
jmp 0x514732
lea eax, [esi + 0x120]
mov edx, 0x5153ec
call fcn.00404fb0
xor eax, eax
mov dword [ebp - 0xc], eax
jmp 0x5151f1
movzx eax, word [esi + 0x1c]
cmp eax, 0xe0
jae 0x514790
lea eax, [esi + 0x120]
mov edx, 0x515414
call fcn.00404fb0
mov eax, dword [ebp - 8]
mov eax, dword [eax]
test dword [eax + 0x11c], 0x40
jle 0x514786
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edi, eax
mov esi, 0x515320
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov dword [ebp - 0xc], 1
jmp 0x5151f1
xor eax, eax
mov dword [ebp - 0xc], eax
jmp 0x5151f1
lea edx, [esi + 0x20]
mov ecx, 0xe0
mov eax, esi
call fcn.00516000
cmp eax, 0xe0
je 0x5147ef
lea eax, [esi + 0x120]
mov edx, 0x51543c
call fcn.00404fb0
mov eax, dword [ebp - 8]
mov eax, dword [eax]
test dword [eax + 0x11c], 0x40
jle 0x5147e5
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edi, eax
mov esi, 0x515320
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov dword [ebp - 0xc], 1
jmp 0x5151f1
xor eax, eax
mov dword [ebp - 0xc], eax
jmp 0x5151f1
movzx eax, word [esi + 0x20]
cmp ax, 0x20b
jne 0x514856
movzx eax, word [esi + 0x1c]
cmp eax, 0xf0
je 0x51484d
lea eax, [esi + 0x120]
mov edx, 0x515464
call fcn.00404fb0
mov eax, dword [ebp - 8]
mov eax, dword [eax]
test dword [eax + 0x11c], 0x40
jle 0x514843
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edi, eax
mov esi, 0x515320
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov dword [ebp - 0xc], 1
jmp 0x5151f1
xor eax, eax
mov dword [ebp - 0xc], eax
jmp 0x5151f1
mov byte [esi + 0x124], 1
jmp 0x5148ac
cmp ax, 0x10b
je 0x5148a5
lea eax, [esi + 0x120]
mov edx, 0x515498
call fcn.00404fb0
mov eax, dword [ebp - 8]
mov eax, dword [eax]
test dword [eax + 0x11c], 0x40
jle 0x51489b
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edi, eax
mov esi, 0x515320
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov dword [ebp - 0xc], 1
jmp 0x5151f1
xor eax, eax
mov dword [ebp - 0xc], eax
jmp 0x5151f1
mov byte [esi + 0x124], 0
cmp byte [esi + 0x124], 0
jne 0x5148e8
movzx eax, word [esi + 0x1c]
movzx edx, ax
cmp edx, 0xe0
je 0x5148da
push 1
push 0
movzx eax, ax
sub eax, 0xe0
push eax
mov eax, dword [esi + 4]
push eax
call sub.kernel32.dll_SetFilePointer
mov eax, dword [esi + 0x30]
mov dword [ebp - 0x18], eax
mov eax, dword [esi + 0x5c]
mov dword [ebp - 0x1c], eax
jmp 0x514957
lea edx, [esi + 0x20]
add edx, 0xe0
mov ecx, 0x10
mov eax, esi
call fcn.00516000
cmp eax, 0x10
je 0x51494b
lea eax, [esi + 0x120]
mov edx, 0x51543c
call fcn.00404fb0
mov eax, dword [ebp - 8]
mov eax, dword [eax]
test dword [eax + 0x11c], 0x40
jle 0x514941
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edi, eax
mov esi, 0x515320
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov dword [ebp - 0xc], 1
jmp 0x5151f1
xor eax, eax
mov dword [ebp - 0xc], eax
jmp 0x5151f1
mov eax, dword [esi + 0x30]
mov dword [ebp - 0x18], eax
mov eax, dword [esi + 0x5c]
mov dword [ebp - 0x1c], eax
cmp byte [esi + 0x124], 0
je 0x514966
movzx eax, word [esi + 0x64]
jmp 0x51496a
movzx eax, word [esi + 0x64]
movzx eax, ax
cmp eax, 0xc
ja case.0x514976.4
jmp dword [eax*4 + 0x51497d]
mov byte [esi + 0x125], 0
jmp 0x514a1b
mov byte [esi + 0x125], 1
jmp 0x514a1b
mov byte [esi + 0x125], 2
jmp 0x514a1b
mov byte [esi + 0x125], 3
jmp 0x514a1b
mov byte [esi + 0x125], 5
jmp 0x514a1b
mov byte [esi + 0x125], 7
jmp 0x514a1b
mov byte [esi + 0x125], 8
jmp 0x514a1b
mov byte [esi + 0x125], 9
jmp 0x514a1b
mov byte [esi + 0x125], 0xa
jmp 0x514a1b
mov byte [esi + 0x125], 0xb
jmp 0x514a1b
mov byte [esi + 0x125], 0xc
jmp 0x514a1b
mov byte [esi + 0x125], 0
cmp byte [esi + 0x124], 0
je 0x514a2c
mov eax, dword [esi + 0x40]
mov dword [ebp - 0x20], eax
jmp 0x514a32
mov eax, dword [esi + 0x40]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 8]
mov eax, dword [eax]
test dword [eax + 0x11c], 0x40
jle 0x514a8a
cmp byte [esi + 0x125], 1
je 0x514a8a
cmp dword [ebp - 0x20], 0
je 0x514a5e
mov eax, dword [ebp - 0x20]
and eax, 0xfff
test eax, eax
je 0x514a8a
lea eax, [esi + 0x120]
mov edx, 0x5154cc
call fcn.00404fb0
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edi, eax
mov esi, 0x515320
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
xor eax, eax
mov dword [ebp - 0xc], eax
jmp 0x5151f1
cmp byte [esi + 0x124], 0
je 0x514a9b
mov eax, dword [esi + 0x44]
mov dword [ebp - 0x24], eax
jmp 0x514aa1
mov eax, dword [esi + 0x44]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 8]
mov eax, dword [eax]
test dword [eax + 0x11c], 0x40
jle 0x514af9
cmp byte [esi + 0x125], 1
je 0x514af9
cmp dword [ebp - 0x24], 0
je 0x514acd
mov eax, dword [ebp - 0x24]
and eax, 0x1ff
test eax, eax
je 0x514af9
lea eax, [esi + 0x120]
mov edx, 0x5154ec
call fcn.00404fb0
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edi, eax
mov esi, 0x515320
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
xor eax, eax
mov dword [ebp - 0xc], eax
jmp 0x5151f1
movzx eax, word [esi + 0x134]
push eax
lea eax, [esi + 0x12c]
mov ecx, 1
mov edx, dword [0x513e60]
call fcn.004069c4
add esp, 4
movzx eax, word [esi + 0x134]
push eax
lea eax, [esi + 0x130]
mov ecx, 1
mov edx, dword [0x513e84]
call fcn.004069c4
add esp, 4
movzx eax, word [esi + 0x134]
mov ecx, eax
add ecx, ecx
add ecx, ecx
add ecx, ecx
lea ecx, [ecx + ecx*4]
mov edx, dword [esi + 0x12c]
mov eax, esi
call fcn.00516000
movzx edx, word [esi + 0x134]
add edx, edx
add edx, edx
add edx, edx
lea edx, [edx + edx*4]
cmp eax, edx
je 0x514bb7
lea eax, [esi + 0x120]
mov edx, 0x515508
call fcn.00404fb0
mov eax, dword [ebp - 8]
mov eax, dword [eax]
test dword [eax + 0x11c], 0x40
jle 0x514bad
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edi, eax
mov esi, 0x515320
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov dword [ebp - 0xc], 1
jmp 0x5151f1
xor eax, eax
mov dword [ebp - 0xc], eax
jmp 0x5151f1
movzx eax, word [esi + 0x134]
dec eax
test eax, eax
jl 0x514c1b
inc eax
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x28], 0
mov eax, dword [ebp - 0x28]
lea eax, [eax + eax*4]
mov edx, dword [esi + 0x12c]
lea ecx, [edx + eax*8]
cmp dword [ebp - 0x24], 0x200
je 0x514c13
cmp dword [ebp - 0x24], 0
jbe 0x514c13
cmp dword [ecx + 0x10], 0
jbe 0x514c13
mov eax, dword [ecx + 0x14]
xor edx, edx
div dword [ebp - 0x24]
test edx, edx
jbe 0x514c13
mov eax, dword [ecx + 0x14]
and eax, 0x1ff
test eax, eax
jne 0x514c13
mov dword [ebp - 0x24], 0x200
jmp 0x514c1b
inc dword [ebp - 0x28]
dec dword [ebp - 0x38]
jne 0x514bce
mov edx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x1c]
call fcn.00513fa8
mov dword [ebp - 0x1c], eax
movzx eax, word [esi + 0x134]
push eax
lea eax, [esi + 0x1150]
mov ecx, 1
mov edx, dword [0x513ecc]
call fcn.004069c4
add esp, 4
movzx eax, word [esi + 0x134]
dec eax
test eax, eax
jl 0x51514f
inc eax
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x28], 0
mov eax, dword [ebp - 0x28]
lea eax, [eax + eax*4]
mov edx, dword [esi + 0x12c]
lea edi, [edx + eax*8]
imul eax, dword [ebp - 0x28], 0x3d
mov edx, dword [esi + 0x130]
lea ebx, [edx + eax]
mov eax, dword [edi + 0xc]
mov edx, dword [ebp - 0x20]
call fcn.00513f90
mov dword [ebx], eax
mov eax, dword [edi + 8]
mov edx, dword [ebp - 0x20]
call fcn.00513fa8
mov dword [ebx + 4], eax
mov eax, dword [edi + 0x14]
mov edx, dword [ebp - 0x24]
call fcn.00513f90
mov dword [ebx + 8], eax
mov eax, dword [edi + 0x10]
mov edx, dword [ebp - 0x24]
call fcn.00513fa8
mov dword [ebx + 0xc], eax
mov eax, dword [edi + 0x24]
mov dword [ebx + 0x10], eax
mov eax, dword [edi + 0xc]
mov dword [ebx + 0x14], eax
mov eax, dword [edi + 8]
mov dword [ebx + 0x18], eax
mov eax, dword [edi + 0x14]
mov dword [ebx + 0x1c], eax
mov eax, dword [edi + 0x10]
mov dword [ebx + 0x20], eax
push 8
push edi
lea eax, [ebp - 0x30]
push eax
call sub.kernel32.dll_lstrcpynA_1
lea edx, [ebp - 0x158]
lea eax, [ebp - 0x30]
call fcn.0040c318
mov edx, dword [ebp - 0x158]
lea eax, [ebp - 0x154]
mov ecx, 0xff
call fcn.004051f8
lea edx, [ebp - 0x154]
lea eax, [ebx + 0x34]
mov cl, 8
call fcn.00403720
cmp dword [ebx + 4], 0
jne 0x514d30
cmp dword [ebx + 0xc], 0
jbe 0x514d30
mov edx, dword [ebp - 0x20]
mov eax, dword [ebx + 0x20]
call fcn.00513fa8
mov dword [ebx + 4], eax
cmp dword [ebx + 0xc], 0
jbe 0x514d65
mov eax, dword [esi + 0x128]
cmp eax, dword [ebx + 8]
jbe 0x514d65
mov eax, dword [ebx + 0xc]
push eax
mov ecx, dword [ebx + 8]
mov edx, dword [esi + 0x128]
xor eax, eax
call fcn.00513fd8
test al, al
jne 0x514d65
mov eax, dword [esi + 0x128]
sub eax, dword [ebx + 8]
mov dword [ebx + 0xc], eax
mov eax, dword [ebp - 8]
mov eax, dword [eax]
test dword [eax + 0x11c], 0x40
jle 0x514db0
mov eax, dword [ebx + 0x14]
xor edx, edx
div dword [ebp - 0x20]
test edx, edx
jbe 0x514db0
lea eax, [esi + 0x120]
mov edx, 0x515544
call fcn.00404fb0
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edi, eax
mov esi, 0x515320
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov dword [ebp - 0xc], 1
jmp 0x5151f1
cmp dword [ebx + 0xc], 0
jbe 0x514fd6
mov eax, dword [esi + 0x128]
cmp eax, dword [ebx + 8]
ja 0x514e62
lea eax, [ebp - 0x15c]
push eax
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x174], eax
mov byte [ebp - 0x170], 0
mov eax, dword [ebx + 8]
mov dword [ebp - 0x16c], eax
mov byte [ebp - 0x168], 0
mov eax, dword [esi + 0x128]
mov dword [ebp - 0x164], eax
mov byte [ebp - 0x160], 0
lea edx, [ebp - 0x174]
mov ecx, 2
mov eax, 0x51556c
call fcn.0040c808
mov edx, dword [ebp - 0x15c]
lea eax, [esi + 0x120]
call fcn.00404fb0
mov eax, dword [ebp - 8]
mov eax, dword [eax]
test dword [eax + 0x11c], 0x40
jle 0x514e58
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edi, eax
mov esi, 0x515320
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov dword [ebp - 0xc], 1
jmp 0x5151f1
xor eax, eax
mov dword [ebp - 0xc], eax
jmp 0x5151f1
mov eax, dword [ebp - 8]
mov eax, dword [eax]
test dword [eax + 0x11c], 0x200
jle 0x514ea2
mov eax, dword [ebp - 8]
mov eax, dword [eax]
test dword [eax + 0x100], 8
jbe 0x514ea2
cmp byte [edi], 0
jbe 0x514ea2
cmp dword [ebx + 4], 0x9c40
jbe 0x514ea2
cmp dword [ebx + 4], 0x11170
jae 0x514ea2
cmp dword [ebx + 0x10], 0xe0000060
push 0
push 0
mov eax, dword [edi + 0x14]
push eax
mov eax, dword [esi + 4]
push eax
call sub.kernel32.dll_SetFilePointer
mov eax, dword [ebx + 0xc]
push eax
mov eax, dword [esi + 0x1150]
mov edx, dword [ebp - 0x28]
lea eax, [eax + edx*4]
mov ecx, 1
mov edx, dword [0x513ea8]
call fcn.004069c4
add esp, 4
mov eax, dword [esi + 0x1150]
mov edx, dword [ebp - 0x28]
mov edx, dword [eax + edx*4]
mov ecx, dword [ebx + 0xc]
mov eax, esi
call fcn.00516000
cdq
push edx
push eax
mov eax, dword [ebx + 0xc]
xor edx, edx
cmp edx, dword [esp + 4]
jne 0x514efd
cmp eax, dword [esp]
pop edx
pop eax
je 0x514fb3
lea eax, [ebp - 0x178]
push eax
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x54], eax
mov byte [ebp - 0x50], 0
lea edx, [ebp - 0x54]
xor ecx, ecx
mov eax, 0x5155d0
call fcn.0040c808
mov edx, dword [ebp - 0x178]
lea eax, [esi + 0x120]
call fcn.00404fb0
mov eax, dword [ebp - 8]
mov eax, dword [eax]
test dword [eax + 0x11c], 0x40
jle 0x514f88
mov eax, dword [ebp - 8]
mov eax, dword [eax]
push esi
mov edi, eax
mov esi, 0x515320
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
pop esi
push 0
mov eax, dword [esi + 0x1150]
mov edx, dword [ebp - 0x28]
lea eax, [eax + edx*4]
mov ecx, 1
mov edx, dword [0x513ea8]
call fcn.004069c4
add esp, 4
mov dword [ebp - 0xc], 1
jmp 0x5151f1
push 0
mov eax, dword [esi + 0x1150]
mov edx, dword [ebp - 0x28]
lea eax, [eax + edx*4]
mov ecx, 1
mov edx, dword [0x513ea8]
call fcn.004069c4
add esp, 4
xor eax, eax
mov dword [ebp - 0xc], eax
jmp 0x5151f1
mov eax, dword [esi + 0x1150]
mov edx, dword [ebp - 0x28]
mov eax, dword [eax + edx*4]
lea ecx, [ebp - 0x48]
mov edx, dword [ebx + 0xc]
call fcn.004c7e38
push esi
lea esi, [ebp - 0x48]
lea edi, [ebx + 0x24]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
pop esi
mov eax, dword [ebx + 0x14]
shr eax, 0x1f
jne 0x514ffc
mov eax, dword [ebx + 0x18]
shr eax, 0x1f
jne 0x514ffc
cmp dword [ebx + 0xc], 0
jbe 0x514ff4
mov eax, dword [ebx + 0x1c]
shr eax, 0x1f
jne 0x514ffc
mov eax, dword [ebx + 0x20]
shr eax, 0x1f
je 0x51502f
lea eax, [esi + 0x120]
mov edx, 0x5155f0
call fcn.00404fb0
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edi, eax
mov esi, 0x515320
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov dword [ebp - 0xc], 1
jmp 0x5151f1
cmp dword [ebp - 0x28], 0
jne 0x515094
mov eax, dword [ebp - 8]
mov eax, dword [eax]
test dword [eax + 0x11c], 0x40
jle 0x51507c
mov eax, dword [ebx + 0x14]
cmp eax, dword [ebp - 0x1c]
je 0x51507c
lea eax, [esi + 0x120]
mov edx, 0x51561c
call fcn.00404fb0
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edi, eax
mov esi, 0x515320
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov dword [ebp - 0xc], 1
jmp 0x5151f1
mov eax, dword [ebx]
mov dword [esi + 0x110], eax
mov eax, dword [ebx]
add eax, dword [ebx + 0xc]
mov dword [esi + 0x114], eax
jmp 0x515143
mov edx, dword [ebp - 8]
mov edx, dword [edx]
test dword [edx + 0x11c], 0x40
jle 0x5150f0
imul eax, dword [ebp - 0x28], 0x3d
mov edx, dword [esi + 0x130]
mov ecx, dword [ebx + 0x14]
sub ecx, dword [edx + eax - 0x29]
mov edx, dword [esi + 0x130]
cmp ecx, dword [edx + eax - 0x39]
je 0x5150f0
lea eax, [esi + 0x120]
mov edx, 0x515648
call fcn.00404fb0
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edi, eax
mov esi, 0x515320
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov dword [ebp - 0xc], 1
jmp 0x5151f1
mov ecx, dword [ebx]
mov eax, ecx
xor edx, edx
push edx
push eax
mov eax, dword [esi + 0x110]
cdq
cmp edx, dword [esp + 4]
jne 0x51510e
cmp eax, dword [esp]
pop edx
pop eax
jbe 0x515118
jmp 0x515112
pop edx
pop eax
jle 0x515118
mov dword [esi + 0x110], ecx
mov ecx, dword [ebx]
add ecx, dword [ebx + 0xc]
mov eax, ecx
xor edx, edx
push edx
push eax
mov eax, dword [esi + 0x114]
cdq
cmp edx, dword [esp + 4]
jne 0x515139
cmp eax, dword [esp]
pop edx
pop eax
jae 0x515143
jmp 0x51513d
pop edx
pop eax
jge 0x515143
mov dword [esi + 0x114], ecx
inc dword [ebp - 0x28]
dec dword [ebp - 0x38]
jne 0x514c65
xor ebx, ebx
mov eax, dword [ebp - 0x1c]
push eax
mov ecx, ebx
mov edx, dword [ebp - 0x18]
mov eax, esi
call fcn.00515f48
mov edi, eax
mov dword [esi + 0x140], edi
test edi, edi
sete al
test al, bl
je 0x5151b5
lea eax, [esi + 0x120]
mov edx, 0x515698
call fcn.00404fb0
mov eax, dword [ebp - 8]
mov eax, dword [eax]
test dword [eax + 0x11c], 0x40
jle 0x5151ae
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edi, eax
mov esi, 0x515320
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov dword [ebp - 0xc], 1
jmp 0x5151f1
xor eax, eax
mov dword [ebp - 0xc], eax
jmp 0x5151f1
cmp byte [esi + 0x124], 0
je 0x5151c5
xor eax, eax
mov dword [ebp - 0xc], eax
jmp 0x5151f1
push 0
push 0
mov eax, dword [esi + 0x140]
push eax
mov eax, dword [esi + 4]
push eax
call sub.kernel32.dll_SetFilePointer
lea edx, [esi + 0x14c]
mov ecx, 0x1000
mov eax, esi
call fcn.00516000
mov dword [esi + 0x114c], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x515237
lea eax, [ebp - 0x178]
call fcn.00404f5c
lea eax, [ebp - 0x15c]
mov edx, 2
call fcn.00404f80
lea eax, [ebp - 0x4c]
call fcn.00404f5c
lea eax, [ebp - 4]
mov edx, dword [0x514380]
call fcn.00406ae4
ret