Function at 0x5a0950
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x18
push ebx
push ebp
mov ebp, dword [esp + 0x24]
push esi
push edi
mov edi, eax
mov eax, dword [edi + 0x1c]
mov ecx, dword [edi + 0x18]
mov edx, dword [edi + 0x14]
push eax
mov eax, dword [edi + 0x10]
push ecx
mov ecx, dword [edi + 0xc]
push edx
mov edx, dword [edi + 8]
push eax
mov eax, dword [edi + 4]
push ecx
push edx
push eax
mov eax, dword [edi]
mov esi, ebp
call fcn.00577980
mov ecx, dword [edi + 0x44]
mov edx, dword [edi + 0x40]
mov eax, dword [edi + 0x3c]
push ecx
mov ecx, dword [edi + 0x38]
push edx
mov edx, dword [edi + 0x34]
push eax
mov eax, dword [edi + 0x30]
push ecx
mov ecx, dword [edi + 0x2c]
push edx
push eax
mov eax, dword [edi + 0x28]
push ecx
lea esi, [ebp + 0x28]
call fcn.00577980
mov edx, dword [edi + 0x6c]
mov eax, dword [edi + 0x68]
mov ecx, dword [edi + 0x64]
push edx
mov edx, dword [edi + 0x60]
push eax
mov eax, dword [edi + 0x5c]
push ecx
mov ecx, dword [edi + 0x58]
push edx
mov edx, dword [edi + 0x54]
push eax
mov eax, dword [edi + 0x50]
push ecx
push edx
lea esi, [ebp + 0x50]
call fcn.00577980
mov eax, dword [edi + 0x94]
mov ecx, dword [edi + 0x90]
mov edx, dword [edi + 0x8c]
push eax
mov eax, dword [edi + 0x88]
push ecx
mov ecx, dword [edi + 0x84]
push edx
mov edx, dword [edi + 0x80]
push eax
mov eax, dword [edi + 0x7c]
push ecx
push edx
push eax
mov eax, dword [edi + 0x78]
lea esi, [ebp + 0x78]
call fcn.00577980
mov ecx, dword [edi + 0xbc]
mov edx, dword [edi + 0xb8]
mov eax, dword [edi + 0xb4]
push ecx
mov ecx, dword [edi + 0xb0]
push edx
push eax
mov edx, dword [edi + 0xac]
mov eax, dword [edi + 0xa8]
push ecx
mov ecx, dword [edi + 0xa4]
push edx
push eax
mov eax, dword [edi + 0xa0]
push ecx
lea esi, [ebp + 0xa0]
call fcn.00577980
mov edx, dword [edi + 0xc8]
mov esi, dword [edi + 0xcc]
xor ebx, ebx
test edx, edx
setle bl
mov eax, dword [edi + 0xd4]
mov ecx, dword [edi + 0xd0]
sub ebx, 1
and ebx, edx
xor edx, edx
test esi, esi
setle dl
mov dword [ebp + 0xc8], ebx
sub edx, 1
and edx, esi
mov dword [ebp + 0xcc], edx
xor edx, edx
test ecx, ecx
setle dl
sub edx, 1
and edx, ecx
xor ecx, ecx
test eax, eax
setle cl
mov dword [ebp + 0xd0], edx
xor ebx, ebx
sub ecx, 1
and ecx, eax
mov dword [ebp + 0xd4], ecx
mov edx, dword [edi + 0xd8]
mov esi, dword [edi + 0xdc]
test edx, edx
setle bl
mov eax, dword [edi + 0xe4]
mov ecx, dword [edi + 0xe0]
sub ebx, 1
and ebx, edx
xor edx, edx
test esi, esi
setle dl
mov dword [ebp + 0xd8], ebx
sub edx, 1
and edx, esi
mov dword [ebp + 0xdc], edx
xor edx, edx
test ecx, ecx
setle dl
sub edx, 1
and edx, ecx
xor ecx, ecx
test eax, eax
setle cl
mov dword [ebp + 0xe0], edx
xor ebx, ebx
sub ecx, 1
and ecx, eax
mov dword [ebp + 0xe4], ecx
mov edx, dword [edi + 0xe8]
mov esi, dword [edi + 0xec]
mov eax, dword [edi + 0xf4]
mov ecx, dword [edi + 0xf0]
test edx, edx
setle bl
sub ebx, 1
and ebx, edx
xor edx, edx
test esi, esi
setle dl
mov dword [ebp + 0xe8], ebx
sub edx, 1
and edx, esi
mov dword [ebp + 0xec], edx
xor edx, edx
test ecx, ecx
setle dl
sub edx, 1
and edx, ecx
xor ecx, ecx
test eax, eax
setle cl
mov dword [ebp + 0xf0], edx
xor ebx, ebx
sub ecx, 1
and ecx, eax
mov dword [ebp + 0xf4], ecx
mov edx, dword [edi + 0xf8]
mov esi, dword [edi + 0xfc]
test edx, edx
mov eax, dword [edi + 0x104]
mov ecx, dword [edi + 0x100]
setle bl
sub ebx, 1
and ebx, edx
xor edx, edx
test esi, esi
setle dl
mov dword [ebp + 0xf8], ebx
sub edx, 1
and edx, esi
mov dword [ebp + 0xfc], edx
xor edx, edx
test ecx, ecx
setle dl
lea esi, [ebp + 0x108]
sub edx, 1
and edx, ecx
xor ecx, ecx
test eax, eax
setle cl
mov dword [ebp + 0x100], edx
sub ecx, 1
and ecx, eax
mov eax, esi
mov dword [ebp + 0x104], ecx
call fcn.004fc8d0
mov eax, esi
lea ebx, [edi + 0x108]
call fcn.004fc8d0
mov eax, ebx
mov dword [esp + 0x2c], 0
call fcn.0057a810
test eax, eax
jle 0x5a0d7e
lea esp, [esp]
mov ecx, dword [edi + 0x10c]
test ecx, ecx
je 0x5a0c1b
mov eax, dword [edi + 0x110]
sub eax, ecx
sar eax, 2
cmp dword [esp + 0x2c], eax
jb 0x5a0c20
call fcn.005d29f1
mov edx, dword [edi + 0x10c]
mov eax, dword [esp + 0x2c]
cmp dword [edx + eax*4], 0
je 0x5a0d05
push 0x10
call fcn.005d2776
add esp, 4
test eax, eax
je 0x5a0c54
xor ecx, ecx
mov dword [eax], ecx
mov byte [eax + 4], 0xff
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ecx
mov ebx, eax
jmp 0x5a0c56
xor ebx, ebx
mov ecx, dword [edi + 0x10c]
test ecx, ecx
mov dword [esp + 0x14], ebx
je 0x5a0c75
mov eax, dword [edi + 0x110]
sub eax, ecx
sar eax, 2
cmp dword [esp + 0x2c], eax
jb 0x5a0c7a
call fcn.005d29f1
mov ecx, dword [edi + 0x10c]
mov edx, dword [esp + 0x2c]
mov eax, dword [ecx + edx*4]
mov cl, byte [eax + 4]
mov eax, dword [eax]
mov dword [ebx], eax
mov eax, dword [ebx + 8]
test eax, eax
mov byte [ebx + 4], cl
je 0x5a0ca6
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
mov dword [ebx + 8], 0
mov eax, dword [ebx + 0xc]
test eax, eax
je 0x5a0cbb
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
mov dword [ebx + 0xc], 0
mov edx, dword [esi + 4]
test edx, edx
jne 0x5a0cc6
xor ecx, ecx
jmp 0x5a0cce
mov ecx, dword [esi + 8]
sub ecx, edx
sar ecx, 2
test edx, edx
je 0x5a0ceb
mov eax, dword [esi + 0xc]
sub eax, edx
sar eax, 2
cmp ecx, eax
jae 0x5a0ceb
mov eax, dword [esi + 8]
mov dword [eax], ebx
add eax, 4
mov dword [esi + 8], eax
jmp 0x5a0d60
mov ebx, dword [esi + 8]
cmp edx, ebx
jbe 0x5a0cf7
call fcn.005d29f1
push ebx
push esi
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x24]
push edx
jmp 0x5a0d59
mov edx, dword [esi + 4]
test edx, edx
mov dword [esp + 0x14], 0
jne 0x5a0d18
xor ecx, ecx
jmp 0x5a0d20
mov ecx, dword [esi + 8]
sub ecx, edx
sar ecx, 2
test edx, edx
je 0x5a0d41
mov eax, dword [esi + 0xc]
sub eax, edx
sar eax, 2
cmp ecx, eax
jae 0x5a0d41
mov eax, dword [esi + 8]
mov dword [eax], 0
add eax, 4
mov dword [esi + 8], eax
jmp 0x5a0d60
mov ebx, dword [esi + 8]
cmp edx, ebx
jbe 0x5a0d4d
call fcn.005d29f1
push ebx
push esi
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0x2c]
push ecx
mov eax, esi
call fcn.00471c90
mov ebx, dword [esp + 0x2c]
add ebx, 1
lea eax, [edi + 0x108]
mov dword [esp + 0x2c], ebx
call fcn.0057a810
cmp ebx, eax
jl 0x5a0c00
mov al, byte [edi + 0x11c]
mov edx, dword [edi + 0x118]
mov esi, dword [sym.imp.GDI32.dll_DeleteObject]
mov byte [ebp + 0x11c], al
mov eax, dword [ebp + 0x120]
xor ebx, ebx
cmp eax, ebx
mov dword [ebp + 0x118], edx
je 0x5a0db1
push eax
call esi
mov dword [ebp + 0x120], ebx
mov eax, dword [ebp + 0x124]
cmp eax, ebx
je 0x5a0dc4
push eax
call esi
mov dword [ebp + 0x124], ebx
mov al, byte [edi + 0x12c]
mov ecx, dword [edi + 0x128]
mov byte [ebp + 0x12c], al
mov eax, dword [ebp + 0x130]
cmp eax, ebx
mov dword [ebp + 0x128], ecx
je 0x5a0def
push eax
call esi
mov dword [ebp + 0x130], ebx
mov eax, dword [ebp + 0x134]
cmp eax, ebx
je 0x5a0e02
push eax
call esi
mov dword [ebp + 0x134], ebx
mov eax, dword [edi + 0x144]
mov ecx, dword [edi + 0x140]
mov edx, dword [edi + 0x13c]
mov esi, dword [edi + 0x138]
mov dword [ebp + 0x144], eax
lea ebx, [ebp + 0x148]
mov eax, ebx
mov dword [ebp + 0x138], esi
mov dword [ebp + 0x13c], edx
mov dword [ebp + 0x140], ecx
call fcn.004fc8d0
mov eax, ebx
lea esi, [edi + 0x148]
call fcn.004fc8d0
mov eax, esi
mov dword [esp + 0x2c], 0
call fcn.0057a810
test eax, eax
jle 0x5a0fd6
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x5a0e78
mov eax, dword [esi + 8]
sub eax, ecx
sar eax, 2
cmp dword [esp + 0x2c], eax
jb 0x5a0e7d
call fcn.005d29f1
mov edx, dword [esi + 4]
mov eax, dword [esp + 0x2c]
cmp dword [edx + eax*4], 0
je 0x5a0f5f
push 0x10
call fcn.005d2776
add esp, 4
test eax, eax
je 0x5a0eae
xor ecx, ecx
mov dword [eax], ecx
mov byte [eax + 4], 0xff
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ecx
mov esi, eax
jmp 0x5a0eb0
xor esi, esi
mov ecx, dword [edi + 0x14c]
test ecx, ecx
mov dword [esp + 0x14], esi
je 0x5a0ecf
mov eax, dword [edi + 0x150]
sub eax, ecx
sar eax, 2
cmp dword [esp + 0x2c], eax
jb 0x5a0ed4
call fcn.005d29f1
mov ecx, dword [edi + 0x14c]
mov edx, dword [esp + 0x2c]
mov eax, dword [ecx + edx*4]
mov cl, byte [eax + 4]
mov eax, dword [eax]
mov dword [esi], eax
mov eax, dword [esi + 8]
test eax, eax
mov byte [esi + 4], cl
je 0x5a0f00
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
mov dword [esi + 8], 0
mov eax, dword [esi + 0xc]
test eax, eax
je 0x5a0f15
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
mov dword [esi + 0xc], 0
mov edx, dword [ebx + 4]
test edx, edx
jne 0x5a0f20
xor ecx, ecx
jmp 0x5a0f28
mov ecx, dword [ebx + 8]
sub ecx, edx
sar ecx, 2
test edx, edx
je 0x5a0f45
mov eax, dword [ebx + 0xc]
sub eax, edx
sar eax, 2
cmp ecx, eax
jae 0x5a0f45
mov eax, dword [ebx + 8]
mov dword [eax], esi
add eax, 4
mov dword [ebx + 8], eax
jmp 0x5a0fba
mov esi, dword [ebx + 8]
cmp edx, esi
jbe 0x5a0f51
call fcn.005d29f1
push esi
push ebx
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x2c]
push edx
jmp 0x5a0fb3
mov edx, dword [ebx + 4]
test edx, edx
mov dword [esp + 0x14], 0
jne 0x5a0f72
xor ecx, ecx
jmp 0x5a0f7a
mov ecx, dword [ebx + 8]
sub ecx, edx
sar ecx, 2
test edx, edx
je 0x5a0f9b
mov eax, dword [ebx + 0xc]
sub eax, edx
sar eax, 2
cmp ecx, eax
jae 0x5a0f9b
mov eax, dword [ebx + 8]
mov dword [eax], 0
add eax, 4
mov dword [ebx + 8], eax
jmp 0x5a0fba
mov esi, dword [ebx + 8]
cmp edx, esi
jbe 0x5a0fa7
call fcn.005d29f1
push esi
push ebx
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0x24]
push ecx
mov eax, ebx
call fcn.00471c90
add dword [esp + 0x2c], 1
lea esi, [edi + 0x148]
mov eax, esi
call fcn.0057a810
cmp dword [esp + 0x2c], eax
jl 0x5a0e63
mov eax, dword [edi + 0x164]
mov ecx, dword [edi + 0x160]
mov edx, dword [edi + 0x15c]
mov esi, dword [edi + 0x158]
mov dword [ebp + 0x164], eax
lea ebx, [ebp + 0x168]
mov eax, ebx
mov dword [ebp + 0x158], esi
mov dword [ebp + 0x15c], edx
mov dword [ebp + 0x160], ecx
call fcn.004fc8d0
mov eax, ebx
lea esi, [edi + 0x168]
call fcn.004fc8d0
mov eax, esi
mov dword [esp + 0x2c], 0
call fcn.0057a810
test eax, eax
jle 0x5a11aa
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x5a104c
mov eax, dword [esi + 8]
sub eax, ecx
sar eax, 2
cmp dword [esp + 0x2c], eax
jb 0x5a1051
call fcn.005d29f1
mov edx, dword [esi + 4]
mov eax, dword [esp + 0x2c]
cmp dword [edx + eax*4], 0
je 0x5a1133
push 0x10
call fcn.005d2776
add esp, 4
test eax, eax
je 0x5a1082
xor ecx, ecx
mov dword [eax], ecx
mov byte [eax + 4], 0xff
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ecx
mov esi, eax
jmp 0x5a1084
xor esi, esi
mov ecx, dword [edi + 0x16c]
test ecx, ecx
mov dword [esp + 0x14], esi
je 0x5a10a3
mov eax, dword [edi + 0x170]
sub eax, ecx
sar eax, 2
cmp dword [esp + 0x2c], eax
jb 0x5a10a8
call fcn.005d29f1
mov ecx, dword [edi + 0x16c]
mov edx, dword [esp + 0x2c]
mov eax, dword [ecx + edx*4]
mov cl, byte [eax + 4]
mov eax, dword [eax]
mov dword [esi], eax
mov eax, dword [esi + 8]
test eax, eax
mov byte [esi + 4], cl
je 0x5a10d4
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
mov dword [esi + 8], 0
mov eax, dword [esi + 0xc]
test eax, eax
je 0x5a10e9
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
mov dword [esi + 0xc], 0
mov edx, dword [ebx + 4]
test edx, edx
jne 0x5a10f4
xor ecx, ecx
jmp 0x5a10fc
mov ecx, dword [ebx + 8]
sub ecx, edx
sar ecx, 2
test edx, edx
je 0x5a1119
mov eax, dword [ebx + 0xc]
sub eax, edx
sar eax, 2
cmp ecx, eax
jae 0x5a1119
mov eax, dword [ebx + 8]
mov dword [eax], esi
add eax, 4
mov dword [ebx + 8], eax
jmp 0x5a118e
mov esi, dword [ebx + 8]
cmp edx, esi
jbe 0x5a1125
call fcn.005d29f1
push esi
push ebx
lea ecx, [esp + 0x1c]
push ecx
lea edx, [esp + 0x2c]
push edx
jmp 0x5a1187
mov edx, dword [ebx + 4]
test edx, edx
mov dword [esp + 0x14], 0
jne 0x5a1146
xor ecx, ecx
jmp 0x5a114e
mov ecx, dword [ebx + 8]
sub ecx, edx
sar ecx, 2
test edx, edx
je 0x5a116f
mov eax, dword [ebx + 0xc]
sub eax, edx
sar eax, 2
cmp ecx, eax
jae 0x5a116f
mov eax, dword [ebx + 8]
mov dword [eax], 0
add eax, 4
mov dword [ebx + 8], eax
jmp 0x5a118e
mov esi, dword [ebx + 8]
cmp edx, esi
jbe 0x5a117b
call fcn.005d29f1
push esi
push ebx
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0x24]
push ecx
mov eax, ebx
call fcn.00471c90
add dword [esp + 0x2c], 1
lea esi, [edi + 0x168]
mov eax, esi
call fcn.0057a810
cmp dword [esp + 0x2c], eax
jl 0x5a1037
mov edx, dword [edi + 0x17c]
push edx
mov edx, dword [edi + 0x178]
lea ecx, [edi + 0x180]
lea eax, [ebp + 0x178]
call fcn.005a0290
lea ebx, [ebp + 0x190]
mov eax, ebx
call fcn.004fc8d0
mov eax, ebx
lea esi, [edi + 0x190]
call fcn.004fc8d0
mov eax, esi
mov dword [esp + 0x2c], 0
call fcn.0057a810
test eax, eax
jle 0x5a1373
lea esp, [esp]
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x5a1215
mov eax, dword [esi + 8]
sub eax, ecx
sar eax, 2
cmp dword [esp + 0x2c], eax
jb 0x5a121a
call fcn.005d29f1
mov eax, dword [esi + 4]
mov ecx, dword [esp + 0x2c]
cmp dword [eax + ecx*4], 0
je 0x5a12fc
push 0x10
call fcn.005d2776
add esp, 4
test eax, eax
je 0x5a124b
xor ecx, ecx
mov dword [eax], ecx
mov byte [eax + 4], 0xff
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ecx
mov esi, eax
jmp 0x5a124d
xor esi, esi
mov ecx, dword [edi + 0x194]
test ecx, ecx
mov dword [esp + 0x14], esi
je 0x5a126c
mov eax, dword [edi + 0x198]
sub eax, ecx
sar eax, 2
cmp dword [esp + 0x2c], eax
jb 0x5a1271
call fcn.005d29f1
mov edx, dword [edi + 0x194]
mov eax, dword [esp + 0x2c]
mov eax, dword [edx + eax*4]
mov cl, byte [eax + 4]
mov edx, dword [eax]
mov eax, dword [esi + 8]
test eax, eax
mov dword [esi], edx
mov byte [esi + 4], cl
je 0x5a129d
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
mov dword [esi + 8], 0
mov eax, dword [esi + 0xc]
test eax, eax
je 0x5a12b2
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
mov dword [esi + 0xc], 0
mov edx, dword [ebx + 4]
test edx, edx
jne 0x5a12bd
xor ecx, ecx
jmp 0x5a12c5
mov ecx, dword [ebx + 8]
sub ecx, edx
sar ecx, 2
test edx, edx
je 0x5a12e2
mov eax, dword [ebx + 0xc]
sub eax, edx
sar eax, 2
cmp ecx, eax
jae 0x5a12e2
mov eax, dword [ebx + 8]
mov dword [eax], esi
add eax, 4
mov dword [ebx + 8], eax
jmp 0x5a1357
mov esi, dword [ebx + 8]
cmp edx, esi
jbe 0x5a12ee
call fcn.005d29f1
push esi
push ebx
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0x2c]
push ecx
jmp 0x5a1350
mov edx, dword [ebx + 4]
test edx, edx
mov dword [esp + 0x14], 0
jne 0x5a130f
xor ecx, ecx
jmp 0x5a1317
mov ecx, dword [ebx + 8]
sub ecx, edx
sar ecx, 2
test edx, edx
je 0x5a1338
mov eax, dword [ebx + 0xc]
sub eax, edx
sar eax, 2
cmp ecx, eax
jae 0x5a1338
mov eax, dword [ebx + 8]
mov dword [eax], 0
add eax, 4
mov dword [ebx + 8], eax
jmp 0x5a1357
mov esi, dword [ebx + 8]
cmp edx, esi
jbe 0x5a1344
call fcn.005d29f1
push esi
push ebx
lea edx, [esp + 0x1c]
push edx
lea eax, [esp + 0x24]
push eax
mov eax, ebx
call fcn.00471c90
add dword [esp + 0x2c], 1
lea esi, [edi + 0x190]
mov eax, esi
call fcn.0057a810
cmp dword [esp + 0x2c], eax
jl 0x5a1200
mov eax, dword [edi + 0x1a4]
mov ecx, dword [edi + 0x1a0]
mov dword [ebp + 0x1a0], ecx
xor ebx, ebx
mov dword [ebp + 0x1a4], eax
mov edx, dword [edi + 0x1a8]
test edx, edx
setle bl
mov esi, dword [edi + 0x1ac]
mov eax, dword [edi + 0x1b4]
mov ecx, dword [edi + 0x1b0]
sub ebx, 1
and ebx, edx
xor edx, edx
test esi, esi
setle dl
mov dword [ebp + 0x1a8], ebx
sub edx, 1
and edx, esi
mov dword [ebp + 0x1ac], edx
xor edx, edx
test ecx, ecx
setle dl
sub edx, 1
and edx, ecx
xor ecx, ecx
test eax, eax
setle cl
mov dword [ebp + 0x1b0], edx
xor ebx, ebx
sub ecx, 1
and ecx, eax
mov dword [ebp + 0x1b4], ecx
mov edx, dword [edi + 0x1b8]
mov esi, dword [edi + 0x1bc]
test edx, edx
setle bl
mov eax, dword [edi + 0x1c4]
mov ecx, dword [edi + 0x1c0]
sub ebx, 1
and ebx, edx
xor edx, edx
test esi, esi
setle dl
mov dword [ebp + 0x1b8], ebx
sub edx, 1
and edx, esi
mov dword [ebp + 0x1bc], edx
xor edx, edx
test ecx, ecx
setle dl
sub edx, 1
and edx, ecx
xor ecx, ecx
test eax, eax
setle cl
mov dword [ebp + 0x1c0], edx
xor ebx, ebx
sub ecx, 1
and ecx, eax
mov dword [ebp + 0x1c4], ecx
mov edx, dword [edi + 0x1c8]
mov esi, dword [edi + 0x1cc]
test edx, edx
mov ecx, dword [edi + 0x1d0]
setle bl
mov eax, dword [edi + 0x1d4]
sub ebx, 1
and ebx, edx
xor edx, edx
test esi, esi
setle dl
mov dword [ebp + 0x1c8], ebx
sub edx, 1
and edx, esi
mov dword [ebp + 0x1cc], edx
xor edx, edx
test ecx, ecx
setle dl
sub edx, 1
and edx, ecx
xor ecx, ecx
test eax, eax
setle cl
mov dword [ebp + 0x1d0], edx
xor edx, edx
sub ecx, 1
and ecx, eax
mov dword [ebp + 0x1d4], ecx
mov ecx, dword [edi + 0x1e0]
mov esi, dword [edi + 0x1dc]
mov eax, dword [edi + 0x1e4]
mov edi, dword [edi + 0x1d8]
test edi, edi
setle dl
sub edx, 1
and edx, edi
mov dword [ebp + 0x1d8], edx
xor edx, edx
test esi, esi
setle dl
pop edi
sub edx, 1
and edx, esi
mov dword [ebp + 0x1dc], edx
xor edx, edx
test ecx, ecx
setle dl
pop esi
sub edx, 1
and edx, ecx
xor ecx, ecx
test eax, eax
setle cl
mov dword [ebp + 0x1e0], edx
sub ecx, 1
and ecx, eax
mov dword [ebp + 0x1e4], ecx
pop ebp
pop ebx
add esp, 0x18
ret 4