Function at 0x56cf58
Capabilities:
Parse pe header

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x88
and dword [ebp - 0x1c], 0
and dword [ebp - 0x24], 0
push ebx
mov ebx, dword [ebp + 8]
push esi
mov esi, dword [ebp + 0x10]
mov dword [ebp - 4], esi
mov edx, dword [ebx + 8]
mov ecx, dword [ebx]
mov dword [ebp - 8], edx
mov dword [ebp - 0x20], ecx
test edx, edx
jne 0x56cf8a
xor eax, eax
jmp 0x56d34e
push edi
mov edi, dword [ebp + 0xc]
test edi, edi
je 0x56d99c
movzx eax, byte [edi]
mov dword [ebp - 0xc], eax
cmp eax, 0x65
ja 0x56d406
je 0x56d99c
cmp eax, 0x29
ja 0x56d23d
cmp eax, 0x24
jae 0x56d203
cmp eax, 0x1d
ja 0x56d08c
je case.0x56d419.148
cmp eax, 0x13
je 0x56d268
cmp eax, 0x14
je case.0x56d419.119
cmp eax, 0x1a
jbe case.0x56d419.120
cmp eax, 0x1c
jbe 0x56d28c
mov eax, dword [edi + 0x14]
and dword [ebp - 0x18], 0
mov dword [ebp - 0xc], eax
push edx
mov esi, dword [eax + 4]
mov eax, dword [eax]
mov dword [ebp + 8], esi
mov dword [ebp - 0x14], eax
call fcn.005854ea
mov edx, dword [edi + 0xc]
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x20], edx
pop ecx
test edx, edx
je 0x56d057
push 0xc
pop ecx
lea eax, [ebp - 0x1c]
mov esi, edx
push eax
push edx
lea edi, [ebp - 0x58]
rep movsd dword es:[edi], dword [esi]
push ebx
call fcn.0056da0d
push eax
lea eax, [ebp - 0x58]
push eax
call fcn.0055798f
mov esi, dword [ebp + 8]
lea eax, [ebp - 0x58]
mov edx, dword [ebp - 0x20]
add esp, 0x14
and dword [ebp - 0x1c], 0
mov dword [ebp - 0x7c], eax
lea eax, [ebp - 0x88]
mov byte [ebp - 0x88], 0x25
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp - 0x14]
mov edi, dword [ebp - 8]
lea eax, [ecx - 1]
test eax, eax
jle 0x56d950
lea ecx, [eax - 1]
shr ecx, 1
inc ecx
mov dword [ebp - 0x10], ecx
push ebx
call fcn.0056c6cf
mov eax, dword [esi]
add esp, 4
test edx, edx
je 0x56d8f8
mov dword [ebp - 0x78], eax
jmp 0x56d8fb
cmp eax, 0x20
je 0x56d14d
cmp eax, 0x21
je 0x56d0e9
add eax, 0xffffffde
cmp eax, 1
ja case.0x56d419.120
push esi
push 1
push 0x4a
push edx
call fcn.0057ed8c
lea eax, [ebp - 0x1c]
push eax
push dword [edi + 0xc]
push ebx
call fcn.0056da0d
mov edi, dword [ebp - 8]
push eax
push dword [ebp - 0xc]
push edi
call fcn.0057ed72
push dword [ebp + 0x10]
mov esi, eax
push 0
push 0x4a
push edi
call fcn.0057ed8c
push esi
push edi
call fcn.00585180
add esp, 0x40
jmp 0x56d48d
push edx
call fcn.005854ea
push dword [ebp - 8]
mov esi, eax
call fcn.005854ea
push dword [ebp + 0x10]
mov edi, eax
push 0
push 0x4d
push dword [ebp - 8]
call fcn.0057ed8c
push edi
push esi
push dword [ebp + 0xc]
push ebx
call fcn.0056cc2f
push dword [ebp + 0x10]
push 1
push 0x4a
push dword [ebp - 8]
call fcn.0057ed8c
push esi
mov esi, dword [ebp - 8]
push esi
call fcn.00586b41
add esp, 0x40
push 0
push dword [ebp + 0x10]
push 0x59
push esi
call fcn.0057ed8c
push edi
push esi
call fcn.00586b41
add esp, 0x18
jmp 0x56d48d
mov eax, dword [edi + 0x14]
mov ecx, dword [edi + 0xc]
mov dword [ebp - 0x18], ecx
mov edi, dword [eax + 4]
lea eax, [ebp - 0x1c]
push eax
push ecx
push ebx
mov esi, dword [edi]
call fcn.0056da0d
mov ebx, eax
lea eax, [ebp - 0x24]
push eax
push esi
push dword [ebp + 8]
call fcn.0056da0d
push dword [ebp + 8]
mov edx, eax
call fcn.00570c25
push dword [ebp + 8]
mov dword [ebp - 0x10], eax
call fcn.00570c25
push 0x20
push dword [ebp - 0x10]
mov dword [ebp - 0x20], eax
push edx
push ebx
push 0x29
push esi
push dword [ebp - 0x18]
push dword [ebp + 8]
call fcn.005534bb
mov esi, dword [edi + 0x18]
add esp, 0x40
mov edi, dword [ebp + 8]
push dword [ebp - 0x24]
push edi
call fcn.005792ae
lea eax, [ebp - 0x24]
push eax
push esi
push edi
call fcn.0056da0d
mov edi, dword [ebp - 0x20]
push 0x20
push edi
push eax
push ebx
push 0x27
push esi
push dword [ebp - 0x18]
push dword [ebp + 8]
call fcn.005534bb
push dword [ebp + 0x10]
mov ebx, dword [ebp - 0x10]
push edi
push ebx
push 0x1c
push dword [ebp - 8]
call fcn.0057eda7
add esp, 0x48
push ebx
mov ebx, dword [ebp + 8]
push ebx
call fcn.005792ae
push edi
push ebx
call fcn.005792ae
add esp, 0x10
jmp 0x56d48d
lea eax, [ebp - 0x1c]
push eax
push dword [edi + 0xc]
push ebx
call fcn.0056da0d
mov esi, eax
lea eax, [ebp - 0x24]
push eax
push dword [edi + 0x10]
push ebx
call fcn.0056da0d
push 0x20
push dword [ebp + 0x10]
push eax
push esi
push dword [ebp - 0xc]
push dword [edi + 0x10]
push dword [edi + 0xc]
push ebx
call fcn.005534bb
add esp, 0x38
jmp 0x56d48d
cmp eax, 0x42
ja 0x56d310
je 0x56d2c0
cmp eax, 0x2b
jb case.0x56d419.120
cmp eax, 0x34
jbe 0x56d28c
cmp eax, 0x35
je case.0x56d419.156
cmp eax, 0x36
jne case.0x56d419.120
lea eax, [ebp - 0x1c]
push eax
push dword [edi + 0xc]
push ebx
call fcn.0056da0d
push esi
push eax
push dword [ebp - 0xc]
mov edi, esi
push dword [ebp - 8]
call fcn.0057ed8c
add esp, 0x1c
jmp 0x56d336
lea eax, [ebp - 0x1c]
push eax
push dword [edi + 0xc]
push ebx
call fcn.0056da0d
mov esi, eax
lea eax, [ebp - 0x24]
push eax
push dword [edi + 0x10]
push ebx
call fcn.0056da0d
push dword [ebp + 0x10]
push esi
push eax
push dword [ebp - 0xc]
push dword [ebp - 8]
call fcn.0057eda7
add esp, 0x2c
jmp 0x56d48d
push esi
push dword [edi + 0xc]
push ebx
call fcn.0056cf58
add esp, 0xc
mov dword [ebp - 4], eax
cmp eax, esi
je 0x56d2e6
push esi
push eax
push 0x53
push dword [ebp - 8]
call fcn.0057ed8c
add esp, 0x10
mov dword [ebp - 4], esi
push 0
push dword [edi + 8]
call fcn.005649ce
movsx eax, al
push eax
push esi
push 0x5b
push dword [ebp - 8]
call fcn.0057ed8c
mov edi, dword [ebp - 4]
push 1
push edi
push ebx
call fcn.0056c646
add esp, 0x24
jmp 0x56d336
cmp eax, 0x53
je 0x56d3a2
cmp eax, 0x58
je 0x56d354
cmp eax, 0x61
jne case.0x56d419.120
push dword [edi + 8]
push esi
push edx
call fcn.005854cd
add esp, 0xc
mov edi, esi
push dword [ebp - 0x1c]
push ebx
call fcn.005792ae
push dword [ebp - 0x24]
push ebx
call fcn.005792ae
add esp, 0x10
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [edi + 0x2c]
mov dword [ebp + 0x10], eax
push esi
movsx ecx, word [eax + 0x22]
movsx eax, word [edi + 0x20]
inc ecx
imul ecx, dword [edi + 0x1c]
inc eax
add eax, ecx
push eax
push 0x8d
push edx
call fcn.0057ed8c
movzx eax, word [edi + 0x20]
add esp, 0x10
test ax, ax
js 0x56d334
movsx ecx, ax
mov eax, dword [ebp + 0x10]
add ecx, ecx
mov eax, dword [eax + 4]
cmp byte [eax + ecx*8 + 0xd], 0x45
jne 0x56d334
push esi
push 0x5a
push dword [ebp - 8]
call fcn.0057ed72
jmp 0x56d331
xor ecx, ecx
cmp dword [ebx + 0x1a4], ecx
jne 0x56d3bd
push str.RAISE___may_only_be_used_within_a_trigger_program
push ebx
call fcn.0056c037
pop ecx
pop ecx
xor eax, eax
jmp 0x56d34d
cmp byte [edi + 1], 2
jne 0x56d3cc
push ebx
call fcn.00573b49
pop ecx
xor ecx, ecx
mov al, byte [edi + 1]
push ecx
cmp al, 4
jne 0x56d3eb
push dword [edi + 8]
push ecx
push 4
push ecx
push 0x49
push edx
call fcn.0057ee03
add esp, 0x1c
jmp 0x56d334
push ecx
push dword [edi + 8]
movsx eax, al
push eax
push 0x713
push ebx
call fcn.005713ce
add esp, 0x18
jmp 0x56d334
add eax, 0xffffff89
cmp eax, 0x28
ja case.0x56d419.120
movzx eax, byte [eax + 0x56d9e4]
jmp dword [eax*4 + 0x56d9ac]
movsx eax, word [edi + 0x22]
mov ecx, dword [edi + 0x28]
imul eax, eax, 0x18
add eax, dword [ecx + 0x1c]
cmp byte [ecx], 0
jne 0x56d43c
mov eax, dword [eax + 0x10]
mov edi, eax
jmp 0x56d336
cmp byte [ecx + 1], 0
je case.0x56d419.152
push esi
push dword [eax + 0xc]
push dword [ecx + 8]
push 0x5e
push edx
call fcn.0057eda7
add esp, 0x14
jmp 0x56d334
mov ecx, dword [edi + 0x1c]
test ecx, ecx
jns 0x56d472
cmp dword [ebx + 0x64], 0
jle 0x56d46f
movsx eax, word [edi + 0x20]
add eax, dword [ebx + 0x64]
jmp 0x56d435
mov ecx, dword [ebx + 0x68]
movzx eax, byte [edi + 0x26]
push eax
movsx eax, word [edi + 0x20]
push esi
push ecx
push eax
push dword [edi + 0x2c]
push ebx
call fcn.0056cae9
add esp, 0x18
mov dword [ebp - 4], eax
mov edi, dword [ebp - 4]
jmp 0x56d336
push esi
push 0
push edi
push ebx
call fcn.0055379f
add esp, 0x10
jmp 0x56d334
push esi
push 0
push dword [edi + 8]
push edx
call fcn.0055388b
jmp 0x56d49f
mov esi, dword [edi + 8]
add esi, 2
push esi
call fcn.0057c78b
pop ecx
lea edi, [eax - 1]
push edi
push esi
mov esi, dword [ebp - 8]
push esi
call fcn.0057f43d
add esp, 4
push eax
call fcn.00571554
push 0xffffffffffffffff
push eax
push 0
push dword [ebp + 0x10]
mov eax, edi
cdq
sub eax, edx
sar eax, 1
push eax
push 0x4f
push esi
call fcn.0057ee03
add esp, 0x28
jmp 0x56d48d
movsx eax, word [edi + 0x20]
push esi
push eax
push 0x50
push edx
call fcn.0057ed8c
mov eax, dword [edi + 8]
add esp, 0x10
cmp byte [eax + 1], 0
je 0x56d334
movsx ecx, word [edi + 0x20]
mov eax, dword [ebx + 0x1dc]
push 0xfffffffffffffffe
push dword [eax + ecx*4 - 4]
push 0xffffffffffffffff
push dword [ebp - 8]
call fcn.0057f070
jmp 0x56d49f
mov eax, dword [edi + 0x1c]
jmp 0x56d435
lea eax, [ebp - 0x1c]
push eax
push dword [edi + 0xc]
push ebx
call fcn.0056da0d
mov esi, eax
lea eax, [ebp - 0x24]
push eax
push dword [edi + 0x10]
push ebx
call fcn.0056da0d
push 0xa0
push dword [ebp + 0x10]
push eax
xor eax, eax
cmp dword [ebp - 0xc], 0x1d
push esi
sete al
add eax, 0x24
push eax
jmp 0x56d229
mov eax, dword [edi + 0xc]
mov cl, byte [eax]
cmp cl, 0x84
jne 0x56d589
push esi
push 1
push eax
push ebx
call fcn.0055379f
jmp 0x56d59a
cmp cl, 0x85
jne 0x56d59f
push esi
push 1
push dword [eax + 8]
push edx
call fcn.0055388b
add esp, 0x10
jmp 0x56d5e0
and dword [ebp - 0x50], 0
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x58]
mov byte [ebp - 0x58], 0x84
push eax
push ebx
mov dword [ebp - 0x54], 0x4400
call fcn.0056da0d
mov esi, eax
lea eax, [ebp - 0x24]
push eax
push dword [edi + 0xc]
push ebx
call fcn.0056da0d
push dword [ebp + 0x10]
push esi
push eax
push 0x30
push dword [ebp - 8]
call fcn.0057eda7
mov esi, dword [ebp + 0x10]
add esp, 0x2c
mov dword [ebp - 4], esi
jmp 0x56d48d
mov eax, dword [edi + 0x28]
test eax, eax
jne 0x56d602
push dword [edi + 8]
push str.misuse_of_aggregate:__s__
push ebx
call fcn.0056c037
jmp 0x56d331
movsx ecx, word [edi + 0x22]
mov eax, dword [eax + 0x28]
add ecx, ecx
mov eax, dword [eax + ecx*8 + 8]
jmp 0x56d435
mov al, byte [ecx + 0x42]
xor edx, edx
test dword [edi + 4], 0x4000
mov dword [ebp - 0x28], edx
mov byte [ebp - 0x10], al
mov dword [ebp - 0x18], edx
je 0x56d6f6
mov dword [ebp + 8], edx
mov eax, edx
mov dword [ebp + 0x10], edx
mov ecx, dword [edi + 8]
push edx
push dword [ebp - 0x10]
mov dword [ebp - 0x14], ecx
push eax
push ecx
push dword [ebp - 0x20]
call fcn.0056e90e
mov ecx, eax
add esp, 0x14
mov dword [ebp - 0xc], ecx
test ecx, ecx
je 0x56d8c6
cmp dword [ecx + 0x10], 0
jne 0x56d8c6
movzx eax, word [ecx + 2]
test eax, 0x200
je 0x56d70e
mov edi, dword [ebp - 8]
push edi
call fcn.005854ea
mov ecx, dword [ebp + 8]
push esi
mov dword [ebp - 0x10], eax
mov ecx, dword [ecx + 4]
push dword [ecx]
push ebx
call fcn.0056c869
mov ecx, dword [ebp + 0x10]
add esp, 0x10
cmp ecx, 1
jle 0x56d6e6
dec ecx
mov dword [ebp + 0x10], 0x18
mov dword [ebp - 0x18], ecx
push dword [ebp - 0x10]
push esi
push 0x23
push edi
call fcn.0057ed8c
push 1
push esi
push ebx
call fcn.0056c6da
push ebx
call fcn.0056c6cf
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0x10]
push esi
mov eax, dword [eax + 4]
push dword [ecx + eax]
push ebx
call fcn.0056c869
push ebx
call fcn.0056c699
add dword [ebp + 0x10], 0x18
add esp, 0x30
sub dword [ebp - 0x18], 1
jne 0x56d6a5
push dword [ebp - 0x10]
push edi
call fcn.00586b41
pop ecx
pop ecx
jmp 0x56d334
mov ecx, dword [edi + 0x14]
mov dword [ebp + 8], ecx
test ecx, ecx
je 0x56d632
mov eax, dword [ecx]
mov dword [ebp + 0x10], eax
jmp 0x56d637
test eax, 0x400
je 0x56d72c
mov eax, dword [ebp + 8]
push esi
mov eax, dword [eax + 4]
push dword [eax]
push ebx
call fcn.0056cf58
add esp, 0xc
jmp 0x56d48a
mov ecx, dword [ebp + 0x10]
xor eax, eax
mov dword [ebp - 0x10], eax
test ecx, ecx
jle 0x56d7a1
mov edi, dword [ebp + 8]
xor edx, edx
mov dword [ebp - 0x14], edx
cmp eax, 0x20
jge 0x56d767
mov eax, dword [edi + 4]
push dword [eax + edx]
call fcn.0056e3d1
mov edx, dword [ebp - 0x14]
pop ecx
test eax, eax
je 0x56d764
mov ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x10]
bts ecx, eax
mov dword [ebp - 0x28], ecx
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebp - 0xc]
test byte [eax + 2], 0x20
je 0x56d78d
cmp dword [ebp - 0x18], 0
jne 0x56d78d
mov eax, dword [edi + 4]
push dword [eax + edx]
push ebx
call fcn.0056dac9
mov edx, dword [ebp - 0x14]
pop ecx
pop ecx
mov ecx, dword [ebp + 0x10]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x10]
add edx, 0x18
inc eax
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x10], eax
cmp eax, ecx
jl 0x56d740
mov edi, dword [ebp + 0xc]
mov edx, dword [ebp + 8]
test edx, edx
je 0x56d81a
cmp dword [ebp - 0x28], 0
je 0x56d7c1
mov eax, dword [ebx + 0x4c]
lea edi, [eax + 1]
add eax, ecx
mov dword [ebp - 0x14], edi
mov edi, dword [ebp + 0xc]
mov dword [ebx + 0x4c], eax
jmp 0x56d7d0
push ecx
push ebx
call fcn.00570bf2
mov edx, dword [ebp + 8]
pop ecx
pop ecx
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0xc]
test byte [eax + 2], 0xc0
je 0x56d7f8
mov ecx, dword [edx + 4]
mov ecx, dword [ecx]
mov dword [ebp - 0x10], ecx
mov cl, byte [ecx]
cmp cl, 0x98
je 0x56d7ed
cmp cl, 0x9a
jne 0x56d7f8
mov al, byte [eax + 2]
mov ecx, dword [ebp - 0x10]
and al, 0xc0
mov byte [ecx + 0x26], al
push ebx
call fcn.0056c6cf
push 3
push 0
push dword [ebp - 0x14]
push edx
push ebx
call fcn.0056c98b
push ebx
call fcn.0056c699
mov edx, dword [ebp + 8]
add esp, 0x1c
jmp 0x56d81e
and dword [ebp - 0x14], 0
cmp dword [ebp + 0x10], 2
jl 0x56d847
test byte [edi + 4], 0x80
je 0x56d847
mov eax, dword [edx + 4]
mov edi, dword [ebp + 0x10]
push dword [eax + 0x18]
push edi
push dword [ebp - 0xc]
push dword [ebp - 0x20]
call fcn.00587fbc
add esp, 0x10
mov dword [ebp - 0xc], eax
jmp 0x56d858
mov edi, dword [ebp + 0x10]
test edi, edi
jle 0x56d855
mov eax, dword [edx + 4]
push dword [eax]
jmp 0x56d833
mov eax, dword [ebp - 0xc]
test byte [eax + 2], 0x20
je 0x56d883
mov eax, dword [ebp - 0x18]
test eax, eax
jne 0x56d86b
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 8]
push 0xfffffffffffffffc
push eax
xor eax, eax
push eax
push eax
push eax
push 0x56
push dword [ebp - 8]
call fcn.0057ee03
mov eax, dword [ebp - 0xc]
add esp, 0x1c
push 0xfffffffffffffffb
push eax
push esi
push dword [ebp - 0x14]
mov esi, dword [ebp - 8]
push dword [ebp - 0x28]
push 0x57
push esi
call fcn.0057ee03
push edi
push esi
call fcn.0057f0f1
add esp, 0x24
test edi, edi
je 0x56d48d
cmp dword [ebp - 0x28], 0
jne 0x56d48d
push edi
push dword [ebp - 0x14]
push ebx
call fcn.00579284
add esp, 0xc
jmp 0x56d48d
push dword [ebp - 0x14]
push str.unknown_function:__s__
jmp 0x56d5f7
push 0
push 0
push edi
push ebx
call fcn.00568f93
add esp, 0x10
jmp 0x56d435
push esi
push dword [edi + 0xc]
push ebx
call fcn.0056cf58
add esp, 0xc
jmp 0x56d435
mov dword [ebp - 0x18], eax
push edi
call fcn.005854ea
push 0x10
mov esi, eax
push esi
push dword [ebp - 0x18]
push ebx
call fcn.0056de8e
mov eax, dword [ebp + 8]
push dword [ebp + 0x10]
push dword [eax + 0x18]
push ebx
call fcn.0056c869
push dword [ebp - 0x28]
push edi
call fcn.00584c72
push ebx
call fcn.0056c699
push esi
push edi
call fcn.00586b41
mov esi, dword [ebp + 8]
add esp, 0x34
mov edx, dword [ebp - 0x20]
add esi, 0x30
sub dword [ebp - 0x10], 1
mov dword [ebp + 8], esi
jne 0x56d071
mov ecx, dword [ebp - 0x14]
test cl, 1
je 0x56d97c
push ebx
call fcn.0056c6cf
mov eax, dword [ebp - 0xc]
push dword [ebp + 0x10]
imul ecx, ecx, 0x18
mov eax, dword [eax + 4]
push dword [ecx + eax - 0x18]
push ebx
call fcn.0056c869
push ebx
call fcn.0056c699
add esp, 0x14
jmp 0x56d98c
push dword [ebp + 0x10]
push 0
push 0x4d
push edi
call fcn.0057ed8c
add esp, 0x10
push dword [ebp - 0x28]
push edi
call fcn.00586b41
pop ecx
pop ecx
jmp 0x56d48d
push esi
push 0
push 0x4d
push edx
call fcn.0057ed8c
jmp 0x56d49f